密钥对:公钥&私钥
公钥:E, N
私钥:D, N
加密:密文 = 明文 ^ E modN
解密:明文 = 密文 ^ D modN
一. 生成密钥对
(1)求N
N = p * q (p, q 为很大的质数)
(2)求L
L = lcm(p-1, q-1) (L是p-1和q-1的最小公倍数)
(3)求E
1 < E < L
gcd(E, L) = 1 (E和L的最大公约数为1,即E, L 互质)
(4)求D
1 < D < L
E * D modL = 1 (要保证存在满足条件的D,就要保证E, L 互质)
二. 加密
三. 对RSA的攻击
密码破译者知道的信息:
密文:窃听取得
E, N:公开的公钥
密码破译者不知道的信息:
明文
数D
其他:p, q, L
- 通过密文求明文
离散对数困难问题 - 暴力破解寻找D
当D足够长时,就不可能在现实的时间内通过暴力破解找出数D
一般而言,RSA中,p,q>512bit, N>1024bit. - 通过E,D求D
需要知道p,q - 中间人攻击