我正在尝试在python3.6中编写一个RSA代码用于教育目的。
密钥生成和消息加密工作正常,但我有解密问题。据我所知,解密算法是M = C d mod n,其中M是消息,C是加密消息(使用接收者的公钥),d是接收者的私钥。问题是当d为负时,根据我的经验,这经常是。我使用从右到左的算法进行模幂运算,但我不知道如何使用负指数。这是我的m代码。 E:
def mod_pow(b, e, m):
if m == 1:
return 0
res = 1
b = b % m
while e > 0:
if e % 2 == 1:
res = (res * b) % m
e = e >> 1
b = (b * b) % m
return res
答案 0 :(得分:1)
James K Polk回答了这个问题,我只需将其添加到扩展的Euclidean算法代码中:
if t < 0:
t += n