Python 3.x 在python中,计算大数幂的最有效方法是什么

Python 3.x 在python中,计算大数幂的最有效方法是什么,python-3.x,cryptography,rsa,Python 3.x,Cryptography,Rsa,我正在做一个加密任务,并试图解密一个rsa密码。这是我计算的一个步骤 明文=(密码号)a模n 当我应用纯文本公式时,我应该得到一个小数字,稍后将使用它。但是这个mod行永远运行,我无法获得输出。对于小的a和n数,它工作得很快。我怎样才能使它工作得更快 下面是代码中与我的问题有关的部分 while True: # Get next line from file line = fileHandler.readline() plaintext = pow(int(line),

我正在做一个加密任务,并试图解密一个rsa密码。这是我计算的一个步骤

明文=(密码号)a模n

当我应用纯文本公式时,我应该得到一个小数字,稍后将使用它。但是这个mod行永远运行,我无法获得输出。对于小的a和n数,它工作得很快。我怎样才能使它工作得更快

下面是代码中与我的问题有关的部分

while True:
    # Get next line from file
    line = fileHandler.readline()
    plaintext = pow(int(line), a) % n
对于这种情况,实际上可以接受3个参数:

pow(int(line),a,n)
根据文件:

。。。如果存在z,则将x返回到幂y,模z(计算效率高于pow(x,y)%z)


我发现的最优化的方法是:

pow = (a, b, mod) #where mod is you modulo
例如:

 mod = 1000000007
    ans = pow(2, n-1, mod) 
    print(ans)
这比使用以下各项快得多:

ans = ((pow(2, n-1) % 1000000007) + 1000000007) % 1000000007 #10 times slower 

如果您包含基本函数,即二进制求幂和从您提供的库链接到您的答案的计时比较,则会更好。
ans = ((pow(2, n-1) % 1000000007) + 1000000007) % 1000000007 #10 times slower