RSA 平方-乘算法 与 快速幂

平方乘算法是快速幂的其中一种,是用于快速计算 ak 的方法,可以用递归的快速幂实现,其原理在于处理二进制的顺序为从高位到地位,杂度为 log2(k)

基本原理:
ak ,将 k 表示为二进制形式则得到 abk...b2b1b0 ,其中 bk 为高位, b0 为低位。
abk...b2b1b0 变形得到 ab...bb1b02k ,或者 ab...bbk1bkk20
观察发现
bk 为1时 abk 对答案有“加成”
bk 为0时 abk “不影响”答案

平方-乘算法原理

利用 ab...bb1b02k (高位到低位)的顺序降幂
对于每一次的降幂
1.将当前答案平方(还原二进制位数)
2.若 bk =1,则累乘基数a

非递归快速幂

利用 ab...bbk1bkk20 (低位到高位)的顺序降幂
对于每一次的降幂
1.若 bk =1,则累乘当前的a
2.将当前a平方(构造当前 a2k

举个例子
计算 97263533 mod11413
3533=(101100111011) 2
平方乘算法(递归快速幂)
RSA 平方-乘算法 与 快速幂_第1张图片

非递归快速幂
RSA 平方-乘算法 与 快速幂_第2张图片

你可能感兴趣的:(YY,总结)