RSA非对称加密算法的原理:
p,q 为两个大素数,令 n=p⋅q ,则 φ(n)=(p−1)(q−1)
取正整数e,满足条件 (φ(n),e)=1,1<e<φ(n),
则存在整数d为e的逆元,表达式为:
ed≡1(modφ(n))
即存在整数 k 使得
设明文为
a
,密文为
aφ(p)≡1(modp)
经由如下变换:
⇒aφ(p)⋅kφ(n)φ(p)≡1(modp)※
⇒ak⋅φ(n)+1≡a(modp)
⇒ae⋅d≡a(modp)
⇒cd≡a(modp)
同理可得:
cd≡a(modq)
因为 p,q 为素数,所以
cd≡a(modn)
至此,RSA算法的原理就明了了,我的疑问在于,选取密钥e的时候,为什么条件是让 (e,φ(n))=1 ,而不是让e和别的数互素?
问题就处在※这一行,为了保证公式能够推导下去,必须满足条件
k⋅xφ(p)
是一个整数,所以
x=n
是绝对不行的。我一开始认为,
x
可以随意选取别的整数,而实际上,确实只要