RSA理解

来源:互联网 发布:java认证培训学校 编辑:程序博客网 时间:2024/06/04 19:29

RSA算法:
生成密钥对
加密
解密
一.其中生成密钥对:
1.随机生成两个足够大的素数p,q
爱丽丝选择了61和53.(实际中,质数越大越难破解)
2.计算公共模数n=p*q
n=61*53(n的二进制位数就是密钥长度,RSA密钥一般为1024位,重要场合为2048位)
3.计算n的欧拉函数φ(n)=(p-1)(q-1)
φ(3233)=60*52=3120
4.随机选择一个整数e,条件是e在1和φ(n)之间,且e与φ(n)互质
这里选取17(实际中常常选择65537)
5.计算e对于φ(n)的模反元素d:ed-1=kφ(n)
d=2753
6.将n和e封装成公钥,n和d封装成私钥:公钥:(n,e)、私钥:(n,d)
公钥:(3233,17)
私钥:(3233,2753)
共出现六个数字:
p
q
n: 公钥
φ(n)
e: 公钥
d: 私钥
二.破解(只知道n和e):
(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d:ed=1+kφ(n)
  (2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
  (3)n=pq。只有将n因数分解,才能算出p和q。
结论:如果n可以被因数分解,d就可以算出,也就意味着破解成功。
大概是人类已经分解的最大整数(232个十进制位,768个二进制位)
三. 加密和解密
加密:me ≡ c (mod n)
爱丽丝的公钥是 (3233, 17),鲍勃的m假设是65,那么可以算出下面的等式:
6517 ≡ 2790 (mod 3233)
于是,c等于2790,鲍勃就把2790发给了爱丽丝。
解密:cd ≡ m (mod n)
27902753 ≡ 65 (mod 3233)
也就是说,c的d次方除以n的余数为m。
这里看到,不知道d没办法解密,而d必须分解n,这是极难做到的。所以RSA保证了安全。

若加密大于n的整数:
分割为短消息
先用对称加密算法加密信息,再用RSA公钥加密DES密钥
四.私钥加密的证明
由欧拉定理可以证明

原创粉丝点击