RSA 加解密中存在指数运算 x a。
通常解密运算中的 指数 非常大,a 的二进制位数 通常会大于等于1024 bit, 即 可能 a >=2^1024.
如果用一般方法直接计算 X^a的值, 即 X*X*X......需要的运算量非常大
定义: MUL 为乘法运算 即乘以x ,
sq 为平方运算
考虑一个例子 计算x8
则最简单的方法需要8次乘法运算
![](/attachment/201612/7/28852942_1481110425d8oz.png)
而更快捷的方法只需要3次平方运算
![](/attachment/201612/6/28852942_1481029833JAX4.png)
在看一个更一般的例子,计算 X24
最简单的方法就是计算24次乘法。
更有效的方法如下: 即一次平方操作,一次乘法操作(乘以x),之后再三次平放操作。 即5次操作即可得到结果
![](/attachment/201612/6/28852942_1481030092Hl1m.png)
也就是说对于指数运算 两种基本操作就可以得到结果:
对当前结果平方