RSA 算法一种常见的非对称加密算法, 常用来对一些在网络上传输的敏感信息进行加密, 本文将概述RSA算法的流程以及一种意想不到的”旁门左道”的攻击方式.
RSA
RSA 算法流程如下,
找到互质的两个数,
p
和q
, 计算N = p*q
确定一个数
e
, 使得e
与(p-1)(q-1)
互质, 此时公钥为(N, e)
, 告诉给对方确定私钥
d
, 使得e*d-1
能够被(p-1)(q-1)
整除消息传输方传输消息
M
, 加密密文C
为:消息接受方通过收到密文消息
C
, 解密消息M
:
RSA算法依赖于欧拉定理, 一个简化版本为大致为 a
和 p
互质, 那么有,
,
a
的 p-1
次方 对 p
取余为1
, (a
的 p-1
次方减去1
可以整除 p
).
欧拉定理的证明比较复杂,本来有一个绝妙的证明方式的, 但由于微信公众号字数有限, 这里就省略了(什么? 这跟费马有什么关系? 实在要看的可以看文末参考资料)
举个例子
N = pq
, 取俩素数 p=11, q = 3, N = p * q = 33
, 取 e
与 (p-1)(q-1) = 20
互质的数 e = 3