我完全难过了。我使用以下值计算RSA中54号的密码:
P = 5; Q = 29; N = 145 d = 9; E = 137
因此加密的数字54将是:
54 ^ 137 mod 145
或等效于python:
import math
math.pow(54,137)%145
我的计算器给了我24,我的python语句给了我54.0。 Python显然是错误的,但我不知道为什么或如何。在你的Python安装上试一试。我的版本是2.5.1但我也尝试使用相同的不正确的结果2.6.5。
答案 0 :(得分:14)
>>> pow(54,137,145)
24
math.pow
是浮点数。你不希望这样。浮点值的有效精度小于17位。 54 ** 137有237位数。
答案 1 :(得分:7)
这是因为使用math
模块基本上只是C数学库的Python包装器,它没有任意精度数。这意味着math.pow(54,137)
计算54 ^ 137作为64位浮点数,这意味着它不足以保存如此大数字的所有数字。尝试使用Python的常规内置任意精度整数:
>>> (54 ** 137) % 145
24L