RSA模幂运算中的负指数

时间:2017-06-13 11:55:30

标签: python-3.x encryption rsa exponentiation modular-arithmetic

我正在尝试在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

1 个答案:

答案 0 :(得分:1)

James K Polk回答了这个问题,我只需将其添加到扩展的Euclidean算法代码中:

if t < 0:
    t += n