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