密码学中的同余运算
密码学已经有数千年的历史,无论是在战争中,还是现在的全球互联网都起着重要的作用。密码学的神奇故事包含着两大古老的领域——数论和概率论。
对于本文所讨论的主题——同余运算就属于数论中的一个重要概念。从孙子问题到凯撒密码,再到 RSA 密钥,同余运算在这些经典的密码问题中也发挥着至关重要的作用。
什么是同余运算
当我们把两个整数 A, B 相除时(B ≠ 0),往往会得到下列等式
这里 A 为被除数(dividend),B 为除数(divisor),Q 为商(quotient),R 为余数(remainder)。
有时,当我们在做 A 除 B 的运算时,我们只关心余数 R 的取值情况(当余数为 0 时,被称为整除)。人们定义计算余数的计算为为取模运算(modulo operator),称为模(记为 mod),这样我们就得到了等式:
这个时候,我们说 A 模 B 与 R 相等,B 被称作模数(modulus)。
例如: