在RSA密码系统中,这类问题是必须要要解决的。下面介绍以快速求幂运用平方乘方法求解此类问题!
这种方法的主要想法就是把指数当作 比特 的二进制数来处理 。例如:
y = 17^22 (mod 21)
代码如下:
def mod(a,x,n):
s = bin(x)[2:]
c = []
for i in s:
c.append(i)
c.reverse()
y = 1
for i in c:
if(int(i)==1):
y = (a*y) % n
a = (a**2) % n
return y
print(mod(17,22,21))
参考《密码学与网络安全》