我试图实施RSA加密/解密(当然是一个简单的实现,因此不需要挑剔)并且似乎数字(即密钥)很好,但最终结果是错误的。
这是一个有问题的功能:
def square_and_mult(base, k, mod):
b = 1
for ki in reversed(k):
if ki == '0':
b = (b**2) % mod
else:
b = ((b**2) * base) % mod
return b
答案 0 :(得分:3)
我怀疑你的模幂运算算法有问题。当您使用python时,可以使用内置pow(base, exp, mod)
来执行此操作,无需自行实现。
In [1]: n = 48961353722289327881
In [2]: e = 7
In [3]: d = 6994479101184233143
In [4]: x = 12345678
In [5]: c = pow(x, e, n)
In [6]: c
Out[6]: 32225547235202030473
In [7]: m = pow(c, d, n)
In [8]: m
Out[8]: 12345678