Modular Arithmetic
模运算是整数运算后取模的算术,结果在 [0, n) 范围内,是数论与密码学的基础。
用途
使运算在有限范围内闭合,是 RSA、Diffie-Hellman 等密码学的基础。
机制
(a + b) mod n、(a × b) mod n 在模 n 下定义。模逆元 a^(-1) 使 a) mod n = 1,当 gcd(a,n)=1 时存在,用扩展欧几里得算法求。费马小定理:a^(p-1) ≡ 1 mod p(p 素数)。
用例
- RSA 加密解密
- Diffie-Hellman 密钥交换
- 哈希取模分片
- 校验和计算
示例
- 输入
(7 + 8) mod 5输出015 mod 5 = 0
常见错误
- Negative modulo behaves differently across languages
- Know your language's behavior or normalize with ((a%n)+n)%n