gpt4 book ai didi

algorithm - 计算 (a^(2^N))%m 的最快算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:20 25 4
gpt4 key购买 nike

有著名的密码学算法来计算模幂 (a^b)%c(例如此处的从右到左二进制方法:http://en.wikipedia.org/wiki/Modular_exponentiation)。

但是是否存在比“经典”算法更快地计算 (a^(2^N))%m 形式的模幂的算法?

非常感谢!

注意:

1) m 可以是一个非常大的素数……也可以不是(因此没有根据 m 进行优化)

2) N 可以大到 2^32-1 (N < 2^32)

最佳答案

如果 m 是质数,您可以更快地计算它。

您首先使用从右到左的二进制方法计算 p = 2N % (m-1)。

然后你用从右到左的二进制方法计算ap % m,由于Fermat's little theorem,它等于原来的表达式.


如果 m 不是素数,但足够小,可以分解它,您可以计算 Euler 的 totient 函数并使用 Euler's Theorem .

如果无法根据 m 进行优化,那么最好的办法可能是使用 Montgomery reduction .

关于algorithm - 计算 (a^(2^N))%m 的最快算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com