0
不错不错!
即使是玩RSA很多年的人,也未必知道这个细节。
事实上,不光是‘由多个素数构成的RSA’有这种现象,就连‘经典的由2个大素数构成的RSA’也有同样的问题。只是很少有人注意到而已。
一般认为,c=m^e(mod n), m'=c^d(mod n), 要想让m=m',就需要满足:ed=1(mod phi(n)), 其中phi是欧拉函数
但其实上述条件只是充分条件,而非必要条件。
在一定条件下,只要满足ed=1 (mod lcm(p-1,q-1))即可(假如n=p*q,且p、q为素数)
在LZ举得例子中,n=13*17*101,则phi=19200
但是lcm却只有1200
所以 并不需要ed=1(mod 19200),才能使得m=m'
而只需要ed=1(mod 1200)就够了
而LZ的例子中 12383*18047=7201 (mod 19200),貌似不满足RSA的经典生成私钥的公式
但是 12383*18047=1 (mod 1200)
因此加密解密是正确的。
同理,能够使得m=m'的解密密钥是不止一个的!
最后于 1小时前 被看场雪编辑 ,原因: