CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

网络安全,安全,网络安全设备,信息安全产品,网络安全新闻,信息安全市场分析,黑客攻防,防黑反黑技巧,黑客,网络安全技术,网络安全方案,病毒播报,最新病毒库,攻防技巧,入侵渗透,新闻,思科,Juniper,天融信,瑞星,金山,江民,卡巴斯基,赛门铁克, 趋势,绿盟科技,联想网御,MCAFEE,安氏,冰峰网络,网络入侵,木马,病毒,病毒分析,木马分析,样本分析,木马样本分析,病毒样本分析,杀毒软件

您现在的位置: IT专家网 > 安全子站 > 安全技巧

RSA算法从基础到实践

作者: watercloud ,  出处:Xfocus, 责任编辑: lvye, 
2006-09-19 21:41
  给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。

  讲讲自己学习RSA中的实践过程,已经对RSA熟悉的看家就不用在此浪费时间了。

  <一>基础

  RSA算法非常简单,概述如下:

  找两素数p和q

  取n=p*q

  取t=(p-1)*(q-1)

  取任何一个数e,要求满足e

  取d*e%t==1

  这样最终得到三个数: n d e

  设消息为数M (M

  设c=(M**d)%n就得到了加密后的消息c

  设m=(c**e)%n则 m == M,从而完成对c的解密。

  注:**表示次方,上面两式中的d和e可以互换。

  在对称加密中:

  d两个数构成公钥,可以告诉别人;

  e两个数构成私钥,e自己保留,不让任何人知道。

  给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。

  别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。

  rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解

  从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法

  求得d。

  <二>实践

  接下来我们来一个实践,看看实际的操作:

  找两个素数:

  p=47

  q=59

  这样

  n=p*q=2773

  t=(p-1)*(q-1)=2668

  取e=63,满足e

  用perl简单穷举可以获得满主 e*d%t ==1的数d:

  C:\Temp>perl -e "foreach $i (1..9999){ print($i),last if $i*63%2668==1 }"

  847

  即d=847

  最终我们获得关键的

  n=2773

  d=847

  e=63

  取消息M=244我们看看

  加密:

  c=M**d%n = 244**847%2773

  用perl的大数计算来算一下:

  C:\Temp>perl -Mbigint -e "print 244**847%2773"

  465

  即用d对M加密后获得加密信息c=465

  解密:

  我们可以用e来对加密后的c进行解密,还原M:

  m=c**e%n=465**63%2773 :

  C:\Temp>perl -Mbigint -e "print 465**63%2773"

  244

  即用e对c解密后获得m=244 , 该值和原始信息M相等。

共2页。 1 2 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


该文章的读者还阅读了

天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i