- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
--(完美WORD文档DOC格式,可在线免费浏览全文和下载)值得下载!
一基础
RSA算法非常简单,概述如下:找两素数p和q取n=p*q取t=(p-1)*(q-1)取任何一个数e,要求满足et并且e与t互素(就是最大公因数为1)取d*e%t==1
这样最终得到三个数: n? d? e
设消息为数M (M n)设c=(M**d)%n就得到了加密后的消息c 设m=(c**e)%n则 m == M,从而完成对c的解密。注:**表示次方,上面两式中的d和e可以互换。
在对称加密中:n d两个数构成公钥,可以告诉别人;n e两个数构成私钥,e自己保留,不让任何人知道。给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。
rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法求得d。
或者说,rsa的安全性在于对于一个大数n,没有有效的办法将其分解成p和q。
二实践
接下来我们来一个实践,看看实际的操作:找两个素数:p=47q=59这样n=p*q=2773t=(p-1)*(q-1)=2668取e=63,满足et并且e和t互素用perl简单穷举可以获得满主 e*d%t ==1的数d:C:\Tempperl -e foreach $i (1..9999){ print($i),last if $i*63%2668==1 }847即d=847
最终我们获得关键的n=2773d=847e=63
取消息M=244我们看看
加密:
c=M**d%n = 244**847%2773用perl的大数计算来算一下:C:\Tempperl -Mbigint -e print 244**847%2773465即用d对M加密后获得加密信息c=465
解密:
我们可以用e来对加密后的c进行解密,还原M:m=c**e%n=465**63%2773 :C:\Tempperl -Mbigint -e print 465**63%2773244即用e对c解密后获得m=244 , 该值和原始信息M相等。
三字符串加密
把上面的过程集成一下我们就能实现一个对字符串加密解密的示例了。每次取字符串中的一个字符的ascii值作为M进行计算,其输出为加密后16进制的数的字符串形式,按3字节表示,如01F
代码如下:
#!/usr/bin/perl -w#RSA 计算过程学习程序编写的测试程序#watercloud 2003-8-12#use strict;use Math::BigInt;
my %RSA_CORE = (n=2773,e=63,d=847); #p=47,q=59
my $N=new Math::BigInt($RSA_CORE{n});my $E=new Math::BigInt($RSA_CORE{e});my $D=new Math::BigInt($RSA_CORE{d});
print N=$N D=$D E=$E\n;
sub RSA_ENCRYPT {??? my $r_mess = shift @_;??? my ($c,$i,$M,$C,$cmess);
??? for($i=0;$i length($$r_mess);$i++)??? {??????? $c=ord(substr($$r_mess,$i,1));??????? $M=Math::BigInt-new($c);??????? $C=$M-copy(); $C-bmodpow($D,$N);??????? $c=sprintf %03X,$C;??????? $cmess.=$c;??? }??? return \$cmess;}
sub RSA_DECRYPT {??? my $r_mess = shift @_;??? my ($c,$i,$M,$C,$dmess);
??? for($i=0;$i length($$r_mess);$i+=3)??? {??????? $c=substr($$r_mess,$i,3);??????? $c=hex($c);??????? $M=Math::BigInt-new($c);??????? $C=$M-copy(); $C-bmodpow($E,$N);??????? $c=chr($C);??????? $dmess.=$c;??? }??? return \$dmess;}
my $mess=RSA 娃哈哈哈~~~;$mess=$ARGV[0] if @ARGV = 1;print 原始串:
您可能关注的文档
最近下载
- 2024年怒江州福贡县义务教育教师专项招聘真题.docx VIP
- 《搭石》第2课时公开课教学课件【部编人教版五年级语文上册】.ppt VIP
- 《海岸工程混凝土结构耐久性技术标准》GBT51464-2024知识培训.pptx VIP
- AQT3034—2022化工过程安全管理导则.pdf VIP
- 巴中市巴州区事业单位考试考试题库2024.docx VIP
- 小学数学新西师版一年级上册全册教案(2024秋).doc
- 2025年秋新教科版三年级上册科学全册精编教案教学设计(新教材).docx
- 《第4单元 花卉盆景技术——水仙盆景的设计与制作课件》初中劳动技术沪科教版七年级课件7216.ppt VIP
- 2025年新教材道德与法治三年级上册第一单元《做学习的主人》教案设计.docx VIP
- 惠普 HP E87640 E87650 E87660 彩色数码复印机中文维修手册.pdf VIP
文档评论(0)