我对RSA密钥生成及其用法有一个非常基本的疑问。
在RSA密钥生成中,您可以选择两个非常大的订单的大素数。然后你将它们相乘。(eq p * q = N
)
现在,Euler(N)=(p-1)(q-1)
。现在你找到一个数字0 < e < Euler(N)
,使得e和Euler(N)是互质的。 {e.Euler(N)}
成为您的公钥。现在你计算d(私钥),使e * d =1 (mod(Euler(N)))
现在假设您使用公钥加密某些内容(m) - c=m^e(mod(N)).
现在,在使用私钥(d)解密时,您执行c^d(mod(N))
现在我的疑问是你在mod(欧拉(N))中发现了e的倒数,但是当你解密时,你正在用mod(N)来做。这怎么可能?
答案 0 :(得分:4)
请参阅维基百科here和here。基本上,您希望解密“撤消”加密。由于e⋅d= 1modφ(N)相当于某个整数k的e⋅d= 1 +k⋅φ(N),你有:
c d mod N =(m e ) d mod N = m (e⋅d) mod N = m (1 +k⋅φ(N)) =(m 1 )·(m φ(N)) k mod N
通过应用您在代数中学到的以下规则:
1) xy =(a x ) y =(a y ) x 和
2)a x + y = a x ·a y
要完成此操作并简化(m 1 )·(m φ(N)) k mod N,请记住φ(N) = 1 mod N,所以
(m φ(N)) k mod N = 1 k = 1 mod N。