Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6318538
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: 网络与安全

2013-05-18 00:11:32

原文地址:RSA非对称加密 作者:invincibleliu


最近在跟我厂安全组斗智斗勇的过程中,突然对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极为不靠谱




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