Jianqing's Blog Archive

Square and Multiply

在密码学中经常看到a^b mod n运算,当b很大的时候,就不能够按照简单的数学运算进行了。

“Square and Multiply”就是一种窍门。

把指数转换成2进制,从左到右开始计算

  • 当指数二进制为1时 z^2*a mod n

  • 当指数二进制为0时 z^2 mod n

其中z为上一个指数二进制计算结果(从左到右),初始为1

举例a^b mod 21 = 3^11 mod 21 = 3^1011 mod 21

  • z = 1

  • z = z^2*a = 1^2 * 3 mod 21 = 3

  • z = z^2 mod n = 3^2 mod 21 = 9

  • z = z^2 mod n = 9^2 * 3 mod 21 = 12

  • z= z^2 *a mod n = 12^2 * 3 mod 21 = 12

所以最终结果:3^11 mod 21 = 12

当然这种方式也存在一些安全问题 - Power consumption of an RSA decryption

Reference

  • https://scientia-potentia-est.com/zh/square-multiply-algorithm/
Tags: Asymmetric Encryption, Cryptography, RSA