使用RSA, 知道这一点:
K_1
-公钥K_2
-公钥C_1
= E(M,K_1)
-密文C_2
= E(M,K_2)
-密文如何找到原始的纯文本M? 注意:不能使用暴力破解。
我在某处读到
r*K_1 + s*K_2 = 1 modN,
和r
(或s
)也可能为负。
因此,可以这样找到M :((C_1 )^-1)^-r * (C_2)^s = M
注意:((C_1 )^-1)
可以从C_1
计算得出,因此M
可以计算出来。
问题:谁说gcd(K_1,K_2) = 1,
,那么r*K_1 + s*K_2 = 1 modN
怎么可能是真的?
第二,如果该解决方案不正确,任何人都可以告诉我他如何解决这个问题?
答案 0 :(得分:2)
假设K_1和K_2是合法密钥,则应该存在以下内容:
gcd(K_1, φ(φ(N))=1
和gcd(K_2, φ(N))=1
,其中φ
是Euler的totient函数。
鉴于此,我们知道K_1和K_2必须奇数。根据这些键仅相差1位的信息,我们知道gcd(K_1, K_2)=1
。这意味着存在r s
,例如rK_1 + sK_2 = 1
(gcd
的定义)。
我们知道C_1 = E(M,K_1)
和C_2 = E(M,K_2)
。
让我们将C_1^r
乘以C_2^s
来看看我们得到了什么:
C_1^r * C_2^s = (M^K_1)^r * (M^K_2)^s = M^(rK_1 + sK_2) = M^1 = M
我们找到了原始消息M。