我完全难过了.我使用以下值计算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
Run Code Online (Sandbox Code Playgroud)
我的计算器给了我24,我的python语句给了我54.0.Python显然是错误的,但我不知道为什么或如何.在你的Python安装上试一试.我的版本是2.5.1但我也试过2.6.5同样不正确的结果.
S.L*_*ott 14
>>> pow(54,137,145)
24
Run Code Online (Sandbox Code Playgroud)
math.pow是浮点数.你不希望这样.浮点值的有效精度小于17位.54**137有237位数字.
那是因为使用math模块基本上只是C数学库的Python包装器,它没有任意精度数.这意味着math.pow(54,137)将54 ^ 137计算为64位浮点数,这意味着它不足以保存如此大数的所有数字.尝试使用Python的普通内置任意精度整数:
>>> (54 ** 137) % 145
24L
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2328 次 |
| 最近记录: |