Chinaunix首页 | 论坛 | 博客
  • 博客访问: 235566
  • 博文数量: 19
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1182
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-20 23:47
个人简介

如果人生是一条隐含马尔科夫模型,那维特比算法告诉我已经偏离最优路线了,但如果起点是现在呢?

文章分类

全部博文(19)

文章存档

2020年(2)

2014年(3)

2013年(14)

分类: 网络与安全

2013-05-15 12:03:30


最近在跟我厂安全组斗智斗勇的过程中,突然对ssh使用的RSA加密算法产生了兴趣,以前就一直好奇为啥一段报文用公钥加密过后只能用密钥解密,今天正好顺道解决了


点击(此处)折叠或打开

  1. 设两个质数为P,Q
  2. N=P*Q
  3. M=(P-1)*(Q-1)
  4. E与M互质,与N组成公钥(E,N)
  5. 存在一自然数n使得M*n+1=E*D,D与N组成私钥(D,N)

目的就是使得报文X用公钥加密得到的Y只能由私钥来解开


点击(此处)折叠或打开

  1. X^E mod N=Y//加密过程
  2. Y^D mod N=X//解密过程

下面给出一组例子:

点击(此处)折叠或打开

  1. int P = 7;
  2. int Q = 11;
  3. int N = 77;
  4. int M = 60;
  5. int E = 43;
  6. int D = 7;


下面是演示加密、解密过程:


点击(此处)折叠或打开

  1. System.out.println(Math.pow(4,43)%77);//输出53
  2. System.out.println(Math.pow(53,7)%77);//输出


安全性:

由于只把(43,77)公布出去,要想得到私钥D=7,唯一的办法就是因式分解N=77,将得到的每一个M*n+1除以D,要求能整除且得到的结果为一质数(私钥D),时间复杂度O(n*N^2),n为尝试获得D的次数,不保证大小...因此想破解RSA极为不靠谱




阅读(3192) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~