資源描述:
《信息安全論文_RSA加密算法的介紹與實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、.....XXXXX信息安全xx論文RSA加密算法實現(xiàn)xxxxxxxx學號:xxxxxxxxxx學習參考.....RSA加密算法介紹及實現(xiàn)一、實驗原理RSA公鑰加密算法是1977年由RonRivest、AdiShamirh和LenAdleman在(美國麻省理工學院)開發(fā)的。RSA取名來自開發(fā)他們三者的名字。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標準。RSA算法基于一個十分簡單的數(shù)論事實:將兩個大素數(shù)相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難
2、,因此可以將乘積公開作為加密密鑰。RSA算法是一種非對稱密碼算法,所謂非對稱,就是指該算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。RSA的算法涉及三個參數(shù),n、e1、e2。其中,n是兩個大質數(shù)p、q的積,n的二進制表示時所占用的位數(shù),就是所謂的密鑰長度。e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。(n及e1),(n及e2)就是密鑰對。RSA加解密的算法完全相同,設A為明文,B為密文,則:A=B^e1
3、modn;B=A^e2modn;e1和e2可以互換使用,即:A=B^e2modn;B=A^e1modn。二、RSA的安全性RSA的安全性依賴于大數(shù)分解,但是否等同于大數(shù)分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數(shù)分解。假設存在一種無須分解大數(shù)的算法,那它肯定可以修改成為大數(shù)分解算法。目前,RSA的一些變種算法已被證明等價于大數(shù)分解。不管怎樣,分解n是最顯然的攻擊方法?,F(xiàn)在,人們已能分解多個十進制位的大素數(shù)。因此,模數(shù)n必須選大一些,因具體適用情況而定。三、本程序實現(xiàn)的功能本程序的功能比較簡單,基
4、于C++語言實現(xiàn)RSA的算法,實現(xiàn)英文字母的加密以及解密。四、程序代碼學習參考...../*RSAalgorithm*/#include#include#include#defineMM7081#defineKK1789#definePHIM6912#definePP85typedefcharstrtype[10000];intlen;longnume[10000];intchange[126];charantichange[37];voidinitialize
5、(){inti;charc;for(i=11,c='A';c<='Z';c++,i++){change[c]=i;antichange[i]=c;}}voidchangetonum(strtypestr){intl=strlen(str),i;len=0;memset(nume,0,sizeof(nume));for(i=0;i6、numb,longk){if(k==0)return1;longcurr=binamod(numb,k/2);if(k%2==0)returncurr*curr%MM;elsereturn(curr*curr)%MM*numb%MM;}longencode(longnumb){returnbinamod(numb,KK);}學習參考.....longdecode(longnumb){returnbinamod(numb,PP);}main(){strtypestr;inti,a1,a2;longcurr;initial
7、ize();puts("Input'Y'ifencoding,otherwiseinput'N':");gets(str);if(str[0]=='Y'){gets(str);changetonum(str);printf("encoded:");for(i=0;i8、urr);curr=decode(curr);a1=curr/100;a2=curr%100;printf("decoded:");if(a1!=0)putchar(antichange[a1]);if(a2!=0)putchar(antichange[a2]);}putchar('');}putchar('');syst