RSA 算法 1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法
它易于理解和操作,也很流行
算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman
但 RSA 的安全性一直未能得到理论上的证明
RSA 的安全性依赖于大数难于分解这一特点
公钥和私钥都是两个大素数(大于100个十进制位)的函数
据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积
密钥对的产生
选择两个大素数,p 和 q
计算:n = p * q 然后随机选择加密密钥 e,要求 e 和 ( p - 1 ) * ( q - 1 )互质
最后,利用Euclid 算法计算解密密钥 d, 满足 e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )其中 n 和 d 也要互质
数e 和 n 是公钥,d 是私钥
两个素数p 和 q不再需要,应该丢弃,不要让任何人知道
加密信息 m(二进制表示)时,首先把 m 分成等长数据块 m1 ,m2,
, mi ,块长 s,其中 2^s