Miller-Rabin测试可以用伪代码描述如下:
Let int n be a possible prime . Let int t be a security parameter .
Write n-1 = 2^{s} * r for odd r .
For i = 1 to t do
Generate a random a in [2; n-2]. Let b=a^{r} mod n .
If b!=1 and b!=-1 do
j=1
While j<=s-1 and b!=-1 do
Let b=b^{2} mod n
If b=1 return "composite"
j=j+1
If b!=-1 return "composite"
Return "prime"
问题是线路让b = a ^ {r} mod n。如果我们为n取一个512位整数,那么r几乎可以很快。执行如此大量的取幂需要很长时间,即使我只使用基数2中的大整数并通过平方采用模幂运算(如果指数位为1,则将结果平方并将结果与基数相乘,同时迭代所有指数位。)
有没有办法加速大指数的模幂运算?