版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
(網(wǎng)絡(luò)安全方案設(shè)計基礎(chǔ))實驗報告時間:2021年05月姓名班級學(xué)號指導(dǎo)教師實驗成績實驗名稱RSA公鑰密碼實驗?zāi)康?、了解和掌握RSA加密算法原理及過程;2、了解生成大素數(shù)的方法;3、能夠編寫代碼實現(xiàn)RSA算法。實驗內(nèi)容1、編寫程序構(gòu)造RSA密鑰;2、編寫程序生成大素數(shù);3、實現(xiàn)RSA密碼體制。實驗過程#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>#defineACCURACY5#defineSINGLE_MAX100#defineEXPONENT_MAX1000#defineBUF_SIZE1024intmodpow(longa,longb,intc){intres=1;while(b>0){/*Needlongmultiplicationelsethiswilloverflow...*/if^b&1){res=(res*a)%c;}b=b>>1;a=(a*a)%c;/*Samedealhere*/}returnres;}intjacobi(inta,intn){inttwos,temp;intmult=1;while(a>1&&a!=n){a=a%n;if(a<=1||a==n)break;twos=0;while(a%2==0&&++twos)a/=2;/*Factoroutmultiplesof2*/if(twos>0&&twos%2==1)mult*=(n%8==111n%8==7)*2-1;if(a<=1||a==n)break;if(n%4!=1&&a%4!=1)mult*=-1;/*Coefficientforflipping*/temp=a;a=n;n=temp;}if(a==0)return0;elseif(a==1)returnmult;elsereturn0;/*a==n=>gcd(a,n)!=1*/}intsolovayPrime(inta,intn){intx=jacobi(a,n);if(x==-1)x=n-1;returnx!=0&&modpow(a,(n-1)/2,n)==x;}intprobablePrime(intn,intk){if(n==2)return1;elseif(n%2==0||n==1)return0;while(k-->0){if(!solovayPrime(rand()%(n-2)+2,n))return0;}return1;}intrandPrime(intn){intprime=rand()%n;n+=n%2;/*nneedstobeevensomodulowrappingpreservesoddness*/prime+=1-prime%2;while(1){if(probablePrime(prime,ACCURACY))returnprime;prime=(prime+2)%n;}intgcd(inta,intb){inttemp;while(b!=0){temp=b;b=a%b;a=temp;}returna;}intrandExponent(intphi,intn){inte=rand()%n;while(1){if(gcd(e,phi)==1)returne;e=(e+1)%n;if(e<=2)e=3;}}intinverse(intn,intmodulus){inta=n,b=modulus;intx=0,y=1,x0=1,y0=0,q,temp;while(b!=0){q=a/b;temp=a%b;a=b;b=temp;temp=x;x=x0-q*x;x0=temp;temp=y;y=y0-q*y;y0=temp;}if(x0<0)x0+=modulus;returnx0;}intreadFile(FILE*fd,char**buffer,intbytes){intlen=0,cap=BUF_SIZE,r;charbuf[BUF_SIZE];*buffer=(char*)malloc(BUF_SIZE*sizeof(char));while((r=fread(buf,sizeof(char),BUF_SIZE,fd))>0){if(len+r>=cap){cap*=2;*buffer=(char*)realloc(*buffer,cap);}memcpy(&(*buffer)[len],buf,r);len+=r;if(len+bytes-len%bytes>cap)*buffer=(char*)realloc(*buffer,len+bytes-len%bytes);do{(*buffer)[len]=''0';len++;}while(len%bytes!=0);returnlen;}intencode(intm,inte,intn){returnmodpow(m,e,n);}intdecode(intc,intd,intn){returnmodpow(c,d,n);}int*encodeMessage(intlen,intbytes,char*message,intexponent,intmodulus){int*encoded=(int*)malloc((len/bytes)*sizeof(int));intx,i,j;for(i=0;i<len;i+=bytes){x=0;for(j=0;j<bytes;j++)x+=message[i+j]*(1<<(7*j));encoded[i/bytes]=encode(x,exponent,modulus);#ifndefMEASUREprintf("%d",encoded[i/bytes]);#endif}returnencoded;}int*decodeMessage(intlen,intbytes,int*cryptogram,intexponent,intmodulus){int*decoded=(int*)malloc(len*bytes*sizeof(int));intx,i,j;for(i=0;i<len;i++){x=decode(cryptogram[i],exponent,modulus);for(j=0;j<bytes;j++){decoded[i*bytes+j]=(x>>(7*j))%128;#ifndefMEASUREif(decoded[i*bytes+j]!='\0')printf("%c",decoded[i*bytes+j]);#endifreturndecoded;…{intp,q,n,phi,e,d,bytes,len;int*encoded,*decoded;char*buffer;FILE*f;srand(time(NULL));while(1){p=randPrime(SINGLE_MAX);printf("p=%d\n",p);q=randPrime(SINGLE_MAX);printf("q=%d\n",q);n=p*q;printf("n=%d\n",n);if^n<128){}elsebreak;if(n>>21)bytes=3;elseif(n>>14)bytes=2;elsebytes=1;phi=(p-1)*(q-1);printf("phi=(p-1)*(q-1)=%d\n",phi);e=randExponent(phi,EXPONENT_MAX);printf("e=%d\n公鑰:(%d,%d)\n",e,e,n);d=inverse(e,phi);prints”d=%d\n私鑰:(%d,%d)\n”,d,d,n);f=fopen("text.txt","r");iff==NULL){
printf("Failedtoopenfile\"text.txt\".Doesitexist?\n");returnEXIT_FAILURE;}len=readFile(f,&buffer,bytes);/*lenwillbeamultipleofbytes,tosendwholechunks*/fclose(f);printf("\n密文是:");encoded=encodeMessage(len,bytes,buffer,e,n);printf("\n明文是:");decoded=decodeMessage(len/bytes,bytes,encoded,d,n);printf("\n");free(encoded);free(decoded);free(buffer);returnEXIT_SUCCESS;}主程序運行(圖1):實驗結(jié)果p=53實驗結(jié)果q67n=3551phi=(p-1)*(q-1)=3432史=991公用:(991,3551)d=3103和助;(3103,S551)密文足:325217913066145714571791186618661S66353
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 23《海底世界》說課稿-2024-2025學(xué)年三年級下冊語文統(tǒng)編版
- 專項工程造價咨詢修改合同:2024版一
- 2025版高端酒店窗簾制作與安裝合作協(xié)議3篇
- 6 將相和說課稿-2024-2025學(xué)年五年級上冊語文統(tǒng)編版
- 哈姆雷特悲劇情節(jié)讀后感
- 2024淘寶年度合作伙伴產(chǎn)品研發(fā)合同模板3篇
- 2024年股權(quán)收購與債務(wù)重組合同3篇
- 2024年長春婚姻解除合同樣本3篇
- 個人承包2024年度生產(chǎn)線能源管理合同3篇
- 2025年新能源汽車充電樁建設(shè)與運營管理合同模板3篇
- 眼科優(yōu)勢病種中醫(yī)診療方案
- 統(tǒng)編版六年級語文上冊專項 專題11文言文閱讀-原卷版+解析
- 高中數(shù)學(xué)聯(lián)賽歷年真題分類匯編解析(高分強基必刷)
- 高中數(shù)學(xué)筆記總結(jié)高一至高三很全
- 011(1)-《社會保險人員減員申報表》
- 2024年工程部工作總結(jié)與計劃
- 電廠C級檢修工藝流程
- 刑事案件律師會見筆錄
- 金屬的拉伸實驗(實驗報告)
- 鍋爐定期檢驗
- 普通話課件(完整版)
評論
0/150
提交評論