您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > 信息安全论文——RSA加密算法介绍及实现
XXXXX信息安全xx论文RSA加密算法实现xxxxxxxx学号:xxxxxxxxxx2RSA加密算法介绍及实现一、实验原理RSA公钥加密算法是1977年由RonRivest、AdiShamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。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^e1modn;B=A^e2modn;e1和e2可以互换使用,即:A=B^e2modn;B=A^e1modn。二、RSA的安全性RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。三、本程序实现的功能本程序的功能比较简单,基于C++语言实现RSA的算法,实现英文字母的加密以及解密。3四、程序代码/*RSAalgorithm*/#includestdio.h#includestring.h#includestdlib.h#defineMM7081#defineKK1789#definePHIM6912#definePP85typedefcharstrtype[10000];intlen;longnume[10000];intchange[126];charantichange[37];voidinitialize(){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;il;i++){nume[len]=nume[len]*100+change[str[i]];if(i%2==1)len++;}if(i%2!=0)len++;}longbinamod(longnumb,longk){if(k==0)return1;longcurr=binamod(numb,k/2);if(k%2==0)returncurr*curr%MM;elsereturn(curr*curr)%MM*numb%MM;}4longencode(longnumb){returnbinamod(numb,KK);}longdecode(longnumb){returnbinamod(numb,PP);}main(){strtypestr;inti,a1,a2;longcurr;initialize();puts(Input'Y'ifencoding,otherwiseinput'N':);gets(str);if(str[0]=='Y'){gets(str);changetonum(str);printf(encoded:);for(i=0;ilen;i++){if(i)putchar('-');printf(%ld,encode(nume[i]));}putchar('\n');}else{scanf(%d,&len);for(i=0;ilen;i++){scanf(%ld,&curr);curr=decode(curr);a1=curr/100;a2=curr%100;printf(decoded:);if(a1!=0)putchar(antichange[a1]);if(a2!=0)putchar(antichange[a2]);}putchar('\n');}putchar('\n');system(PAUSE);return0;}5五、实验结果1、加密截图:结果分析:先输入控制指令字母:Y再输入要加密的字符:HELLOWORLD2、解密截图:结果分析:先输入控制指令字母:N再输入字符个数:6最后输入要解密的密文:227360235313457127076185
本文标题:信息安全论文——RSA加密算法介绍及实现
链接地址:https://www.777doc.com/doc-4983725 .html