接上一篇,也是网易公开课学到的。
**
RSA加密
**
①Bob有一个数m(m需要被加密)
②计算机me,(e为一个随机公开的数)
③me mod N = c (N为随机数)(c是密文)
如果提供c、N、e求m:(解密)
cd mod N = m
me*d mod N =m
**
**
*N的加密:N是随机的但也有加密
**
①Alice随机一个超150位的质数P1
②随机生成一个P1的位数,相当于第二个质数P2
P1、P2均要为质数
③合数N=P1*P2(超过300位)
④将P1、P2隐藏起来,将N告诉所有人
因此要解密N的话,关键就要分解N,获得P1和P2
①引入一个欧拉函数f(n)=f(P1)*f(P2)(因为P1和P2都是质数)
**
**
**再回到me*d mod N =m,要解密知道了N,接下来就要知道d:
**
引入欧拉定理:mf(n) = 1 mod n
∵1k = 1
∴mk*f(n) = 1 mod n
∵1 * m = m
∴(m * m)k*f(n) = m mod n
综上,mk*f(n)+1 = m mod n
所以med mod N =m中的 ed = k f(n)+1
d = (k*f(n)+1)/e
**
k值存在的意义:
调整d为整数,即【(f(n)*k) + 1】 % e == 0