模重复平方算法

2019-04-13 11:45发布

今天在做diffie_hellman加密中需要求一个数很多次方模另一个数,如
44^36mod97,这时用模重复平方算法就可以快速计算出结果。 #include using namespace std; size_t repeatMod(size_t base, size_t n, size_t mod) { size_t a = 1; while(n) { if(n&1) { a = (a*base)%mod; } base = (base*base)%mod; n = n>>1; } return a; } int main() { int ret = repeatMod(44,36,97); printf("%d ",ret); return 0; } 结果为75,这里借用别人的图片解释一下
对于b^n(modm)
这里写图片描述
这里写图片描述
参考书籍:《信息安全数学基础》(第二版)