RSA
- e: 加密公钥
- d: 解密密钥
- N/n: 大数
- p,q: 两个素数
- m: 明文
- c: 密文
数学前提
- 欧拉函数 : 小于 ,且与 互素的数的个数
- 欧拉定理:若 ,则
- 费马小定理:若 p 为素数,则
- 欧拉函数的乘法性质:若 ,
密钥生成流程
- 选取两个大素数 p 和 q
- 计算出 n = p * q
- 随机选取加密密钥 e(公钥),使得 gcd(e,(p-1)(q-1))=1
- 计算出 e 在 (p-1)(q-1) 下的乘法逆元 d,作为解密密钥 (私钥)
- 公开 (e,n) 作为公钥
加解密
- 加密
- 解密
RSA 签名
- 加密邮件的步骤(信件 L 由 A 发给 B)
- 信件 L 用 B 的公钥加密
- 把内容发给 B
- B 用私钥解密信件
- 验证邮件的步骤(信件 L 由 A 发给 B)
- L 做 MD5 摘要,M=MD5(L)
- 用 A 的私钥进行加密 M'=RSA(M,A 的私钥)
- 把 L、M' 和 A 的公钥发送给 B
- B 用 A 的私钥解密 m=RSA(M',A 的公钥)
- 判断 MD5(L) 是否等于 m
RSA 正确性证明
已知 , , p、q 互素,
证明
Step1 公式化简
Step2 分类讨论证明
(1)若 ,则
(2)若
QED