代码未改动但RSA运算输出不同结果的问题排查求助
RSA部分解密结果错误的核心原因
- 参数p不符合RSA要求:你选择的
p=111不是素数,111可被分解为3×37。RSA的底层逻辑要求p、q必须为互不相同的素数,你之前使用的p=61、q=53均为素数,所以运行结果正常。 - 欧拉函数φ(n)计算错误:φ(n)=(p-1)(q-1)的计算公式仅在n为两个不同素数的乘积时成立,你使用非素数p计算得到的φ(n)=12320是错误值,实际正确的φ(111×113)=φ(3)×φ(37)×φ(113)=2×36×112=8064。
- 密钥对不合法:你验证的
e×d mod 12320=1是基于错误的φ(n)计算的,实际e和d不满足RSA要求的e×d mod φ(n)=1的互逆条件,因此无法保证所有明文都能正确解密还原。 - 部分明文解密正确属于巧合:小部分ASCII值刚好满足模n所有素因子的同余条件,看起来结果正确,不代表参数逻辑无误。
- 补充:你加密的单个ASCII数值在0~127区间,远小于模数12543,不存在明文块超过模数的问题。
修复方案
将p更换为合法素数,例如可选p=109、p=127等素数,重新计算φ(n)、合法的e和d密钥对即可正常运行。
内容的提问来源于stack exchange,提问作者Hürol Keskinkılıç
相关产品推荐
相关产品推荐

