![Diffie-Hellman密鑰交換算法綜合實(shí)驗(yàn)報(bào)告_第1頁(yè)](http://file4.renrendoc.com/view3/M02/33/15/wKhkFmYKM2uAMBxQAAF4S9WKJac256.jpg)
![Diffie-Hellman密鑰交換算法綜合實(shí)驗(yàn)報(bào)告_第2頁(yè)](http://file4.renrendoc.com/view3/M02/33/15/wKhkFmYKM2uAMBxQAAF4S9WKJac2562.jpg)
![Diffie-Hellman密鑰交換算法綜合實(shí)驗(yàn)報(bào)告_第3頁(yè)](http://file4.renrendoc.com/view3/M02/33/15/wKhkFmYKM2uAMBxQAAF4S9WKJac2563.jpg)
![Diffie-Hellman密鑰交換算法綜合實(shí)驗(yàn)報(bào)告_第4頁(yè)](http://file4.renrendoc.com/view3/M02/33/15/wKhkFmYKM2uAMBxQAAF4S9WKJac2564.jpg)
![Diffie-Hellman密鑰交換算法綜合實(shí)驗(yàn)報(bào)告_第5頁(yè)](http://file4.renrendoc.com/view3/M02/33/15/wKhkFmYKM2uAMBxQAAF4S9WKJac2565.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(網(wǎng)絡(luò)安全方案設(shè)計(jì)基礎(chǔ))實(shí)驗(yàn)報(bào)告時(shí)間: 地點(diǎn):軟件實(shí)驗(yàn)室姓名班級(jí)學(xué)號(hào)指導(dǎo)教師實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)名稱(chēng)Diffie-Hellman密鑰交換算法實(shí)驗(yàn)?zāi)康?、了解和掌握Diffie-Hellman算法原理及過(guò)程;2、通過(guò)密鑰交換算法實(shí)現(xiàn)對(duì)稱(chēng)加解密密鑰的保密傳輸;3、能夠編寫(xiě)代碼實(shí)現(xiàn)Diffie-Hellman算法,并實(shí)現(xiàn)數(shù)據(jù)保密傳輸。實(shí)驗(yàn)內(nèi)容1、編寫(xiě)Diffie-Hellman程序,協(xié)商出用于收、發(fā)雙方的加、解密密鑰K;2、模擬發(fā)送端A,用協(xié)商出的密鑰K,通過(guò)對(duì)稱(chēng)加密算法(具體算法不限)將文本文件加密;模擬接收端B,用協(xié)商出的密鑰K,對(duì)接收到的密文解密。實(shí)驗(yàn)過(guò)程A端的代碼#include<stdio.h>#include<math.h>intXa=3,Xb=5,Ya,Yb;/**********A端通過(guò)Yb計(jì)算Ka*************/intusera(alpha,q){intk1=pow(Yb,Xa);k1=k1%q;returnk1;}/**********B端通過(guò)Ya計(jì)算Kb*************/intuserb(alpha,q){intk2=pow(Ya,Xb);k2=k2%q;returnk2;/*函數(shù)聲明*/voidInitSbox(unsignedcharsbox[]);voidKeyExpansion(unsignedcharkey[],char*k,intlen);voidUpsetSbox(unsignedcharsbox[],unsignedcharkey[]);voidDataProcess(unsignedcharsbox[],FILE*fp1,FILE*fp2);voidDataEncrypt(char*k,unsignedchar*key,unsignedchar*sbox,FILE*fp1,FILE*fp2);voidDataDecrypt(char*k1,unsignedchar*key,unsignedchar*sbox,FILE*fp1,FILE*fp2);intwrite_file(charname[],chardata[],intsize);intread_file(charname[],chardata[],intsize);/*初始化S盒*/voidInitSbox(unsignedcharsbox[]){inti;for(i=0;i<256;i++)sbox[i]=i;}/*密鑰填充256數(shù)組刃voidKeyExpansion(unsignedcharkey[],char*k,intlen){inti;if(len<=256){for(i=0;i<256;i++)key[i]=k[i%len];}if(len>256){for(i=0;i<256;i++)key[i]=k[i];}}/*打亂S盒*/
intread_file(unsignedcharname[],chardata[],intsize){FILE*file=fopen(name,"rb+");if(file==NULL)return0;rewind(file);//移動(dòng)指針到開(kāi)頭fread(data,sizeof(char),size,file);//讀出一個(gè)數(shù)組fclose(file);return1;}intmain(intargc,constchar*argv[]){intq=11,alpha=2;intKa;unsignedcharkey1[25]={0x00},key2[25]={0x00};unsignedcharkey[256]={0x00};unsignedcharsbox[256]={0x00};FILE*fp1,*fp2;intflag=1,i;printf("A用戶端\n");printf("q=11,a=2\n");//CalculatingYaYa=pow(alpha,Xa);Ya=Ya%q;printf("計(jì)算得到Y(jié)a=%d\n",Ya);printf("請(qǐng)輸入B端的公鑰Yb:");scanfC'%d",&Yb);Ka=usera(alpha,q);printf("計(jì)算得到最終公鑰K=%d",Ka);key1[0]=Ka;/**********加密***********/fp1=fopen("mingwen.txt","r");if(fp1==NULL){printf("打開(kāi)源文件失敗!\n");getchar();exit(0);fp2=fopen("miwen.txt","w");if(fp2==NULL){printf("打開(kāi)加密后文件失敗!\n");getchar();exit(0);DataEncrypt(key1,key,sbox,fp1,fp2);return0;/********************************B端代碼************************************/#include<stdio.h>#include<math.h>intXb=5,Ya,Yb;/*函數(shù)聲明*/voidInitSbox(unsignedcharsbox[]);voidKeyExpansion(unsignedcharkey[],char*k,intlen);voidUpsetSbox(unsignedcharsbox[],unsignedcharkey[]);voidDataProcess(unsignedcharsbox[],FILE*fp1,FILE*fp2);voidDataEncrypt(char*k,unsignedchar*key,unsignedchar*sbox,FILE*fp1,FILE*fp2);voidDataDecrypt(char*k1,unsignedchar*key,unsignedchar*sbox,FILE*fp1,FILE*fp2);intwrite_file(charname[],chardata[],intsize);intread_file(charname[],chardata[],intsize);
/*加解密數(shù)據(jù)刃voidDataProcess(unsignedcharsbox[],FILE*fp1,FILE*fp2){//0加密,1解密inti=0,j=0,size=0;inttemp2,temp1,t;chark,cipherchar,data_Stream[100]={0x00};unsignedchartemp;charch=fgetc(fp1);while(ch!=EOF){i=(i+1)%256;temp2=j+(int)sbox[i];j=temp2%256;temp=sbox[i];sbox[i]=sbox[j];sbox[j]=temp;temp1=(int)sbox[i]+(int)sbox[j];t=temp1%256;data_Stream[size++]=k=sbox[t];cipherchar=chAk;fputc(cipherchar,fp2);ch=fgetc(fpl);printf("%c",ch);}write_file("Stream.txt",data_Stream,size);}/*解密總函數(shù)刃voidDataDecrypt(unsignedchar*k1,unsignedchar*key,unsignedchar*sbox,FILE*fp1,FILE*fp2){intlen=strlen(kl);KeyExpansion(key,k1,len);InitSbox(sbox);
UpsetSbox(sbox,key);printf("\n密文為:");DataProcess(sbox,fp1,fp2);fclose(fpl);fclose(fp2);printf("\n解密成功,內(nèi)容存于“jiemi.txt”中!\n\n");}/*******文件的寫(xiě)操作**********/intwrite_file(charname[],chardata[],intsize){FILE*file=fopen(name,"ab+");if(file==NULL)return0;fwrite(data,sizeof(char),size,file);//寫(xiě)入一個(gè)數(shù)組rewind(file);//移動(dòng)指針到開(kāi)頭fclose(file);return1;}/******文件的操作*******/intread_file(unsignedcharname[],chardata[],intsize){FILE*file=fopen(name,"rb+");if(file==NULL)return0;rewind(file);//移動(dòng)指針到開(kāi)頭fread(data,sizeof(char),size,file);//讀出一個(gè)數(shù)組fclose(file);return1;}/**********B端通過(guò)Ya計(jì)算Kb*************/intuserb(alpha,q)intk2=pow(Ya,Xb);k2=k2%q;returnk2;intmain(intargc,constchar*argv[]){intq=11,alpha=2;intKb;unsignedcharkey1[25]={0x00},key2[25]={0x00};unsignedcharkey[256]={0x00};unsignedcharsbox[256]={0x00};FILE*fp1,*fp2;intflag=1,i;printf("B用戶端\n");printf("q=11,a=2\n");//CalculatingYbYb=pow(alpha,Xb);Yb=Yb%q;printf("計(jì)算得到Y(jié)b=%d\n",Yb);printf("請(qǐng)輸入A端的公鑰Ya:");scanf("%d",&Ya);Kb=userb(alpha,q);printf("計(jì)算得到最終秘鑰K=%d\n",Kb);key2[0]=Kb;/*********解密**********/fp1=fopen("miwen.txt","r");if(fp1==NULL){printf("打開(kāi)加密后文件失敗!\n");getchar();exit(0);fp2=fopen("jiemi.txt","w");if(fp2==NULL){printf("打開(kāi)解密后文件失敗!\n");getchar();exit(0);實(shí)圖1R用戶端q=1La=2計(jì)算得到Y(jié)b=10齒輸入A端的公胡Ya:A用戶端q=ll,a=2計(jì)算得到Y(jié)a.=8請(qǐng)輸入B端的公鑰Yb:A用戶端q=llJa=2計(jì)算得到Y(jié)?=8請(qǐng)輸入E端的公鑰Yb:10計(jì)算得到最終公鑰K=10明文為engChunHui加密成功,加密內(nèi)容在;KmiwerLtxt"中PressanykeytocontinueB用戶端q二11,a二2計(jì)算得到Y(jié)b=10詰輸Xa端的公鑰Ya:8十算廿到最河秘竊K=l。密文為:荏龍??u浚。鄙:0?解密成功,內(nèi)容薦于"jiemi.txt”中!Pressanykeytocontinue1(圖2)
存儲(chǔ)明文的文件(圖3):mingwen.ttt-記事本文件出相露回格式。查窗切努助(W|180345301B7DengChunHui圖3存儲(chǔ)密文的文件(圖4):miwen.txt-記事本文件舊編輯㈤梏式⑼筐看M幫助(HJ榛臬€??U浚3\鄢!0?圖4解密后的文件(圖5):jiemi.tx
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年金剛石膜-聲表面波器件(SAW)項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 2025年絕緣材料:絕緣套管項(xiàng)目提案報(bào)告模范
- 2025年個(gè)體經(jīng)營(yíng)物流配送協(xié)議
- 2025年耐高溫可加工陶瓷項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 2025年發(fā)泡消泡劑項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 2025年授權(quán)代理業(yè)務(wù)綜合合同范本
- 2025年建筑器材租賃合同標(biāo)桿
- 2025年倉(cāng)儲(chǔ)物流服務(wù)合作協(xié)議合同
- 2025年工業(yè)外包合同中的環(huán)境管理措施
- 2025年城市綠化養(yǎng)護(hù)服務(wù)合同文本
- 2024年01月江西2024年江西銀行贛州分行招考筆試歷年參考題庫(kù)附帶答案詳解
- 初三數(shù)學(xué)一元二次方程應(yīng)用題附答案
- 教職工安全管理培訓(xùn)
- 云南省曲靖市羅平縣2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 2025年春新人教PEP版英語(yǔ)三年級(jí)下冊(cè)課件 Unit 1 Part C 第8課時(shí) Reading time
- 中國(guó)糖尿病防治指南(2024版)要點(diǎn)解讀
- Unit 1 Nice boys and girls【知識(shí)精研】-一年級(jí)英語(yǔ)下學(xué)期(人教PEP版一起)
- 《口腔科學(xué)緒論》課件
- 《消防檢查指導(dǎo)手冊(cè)》(2024版)
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 粵教粵科版三年級(jí)下冊(cè)科學(xué)全冊(cè)課時(shí)練(同步練習(xí))
評(píng)論
0/150
提交評(píng)論