仿射密码(Affine-Cipher)
仿射密码的数学模型、加解密公式与计算示例说明
#status / growing
#type / concept
#tech / security / crypto
#resource / algorithm
[!info] related notes 密码学 euclidean-algorithm modular-inverse 非对称密码学
仿射密码 (Affine Cipher)
[!info] related notes
- 相关概念: 密码学, euclidean-algorithm, modular-inverse
- 相关练习: 仿射密码求解
1. 简介
仿射密码是一种单表代换密码。它将明文中的每个字母映射为数值,然后通过一个线性方程(仿射函数)计算出对应的密文数值,最后还原为字母。
它的数学形式为:$y = ax + b$,在密码学中通常在模 $m$(字母表长度)下进行。
关系:
- 当 $b = 0$ 时,它退化为 乘法密码。
2. 数学模型
假设字母表大小为 $m$(通常英文为 26),将字母 A-Z 对应数字 0-25。
密钥
密钥由两个整数 $(a, b)$ 组成:
- $a$ (乘数):必须满足 $gcd(a, m) = 1$,即 $a$ 与 $m$ 互素。
- 原因:只有 $a$ 与 $m$ 互素时,$a$ 才存在模逆元 $a^{-1}$,才能保证解密的唯一性。
- $b$ (位移):任意整数,$0 \le b < m$。
加密过程
$$ C = E(P) = (a \times P + b) \pmod m $$
- $P$: 明文 (Plaintext)
- $C$: 密文 (Ciphertext)
解密过程
$$ P = D(C) = a^{-1} \times (C - b) \pmod m $$
- $a^{-1}$: 是 $a$ 关于模 $m$ 的乘法逆元(即满足 $a \times a^{-1} \equiv 1 \pmod m$)。
- 注意:解密不是简单的除以 $a$,而是乘以 $a$ 的逆元。
3. 计算实例
设定:
- 模数 $m = 26$
- 密钥 $a = 5, b = 8$ (检查:$gcd(5, 26)=1$,满足条件)
- 明文:“HOT”
第一步:加密
- H (7): $C = (5 \times 7 + 8) \pmod{26} = 43 \pmod{26} = 17 \rightarrow \textbf{R}$
- O (14): $C = (5 \times 14 + 8) \pmod{26} = 78 \pmod{26} = 0 \rightarrow \textbf{A}$
- T (19): $C = (5 \times 19 + 8) \pmod{26} = 103 \pmod{26} = 25 \rightarrow \textbf{Z}$
- 密文:“RAZ”
第二步:解密
首先计算 $a=5$ 的逆元 $a^{-1}$: 我们需要找一个数 $x$,使得 $5x \equiv 1 \pmod{26}$。 通过扩展欧几里得算法或试算,可知 $5 \times 21 = 105 = 4 \times 26 + 1$。 所以 $a^{-1} = 21$。
解密公式变为:$P = 21 \times (C - 8) \pmod{26}$
- R (17): $P = 21 \times (17 - 8) = 21 \times 9 = 189$。 $189 \pmod{26} = 7 \rightarrow \textbf{H}$
- A (0): $P = 21 \times (0 - 8) = 21 \times (-8) = -168$。 $-168 \pmod{26} = -168 + 7 \times 26 = -168 + 182 = 14 \rightarrow \textbf{O}$ (或者理解为 $0-8 = -8 \equiv 18 \pmod{26}$,然后 $21 \times 18 = 378 \equiv 14$)
- Z (25): $P = 21 \times (25 - 8) = 21 \times 17 = 357$。 $357 \pmod{26} = 19 \rightarrow \textbf{T}$
- 明文:“HOT”
4. 安全性分析
- 密钥空间:
- $a$ 的选择:26以内与26互素的数有 $\phi(26) = 12$ 个 (1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25)。
- $b$ 的选择:26 种 (0-25)。
- 总密钥空间:$12 \times 26 = 312$。
- 弱点:
- 密钥空间极小:计算机瞬间可以穷举破解。
- 保留了频率特征:作为单表代换密码,它无法隐藏明文的统计规律(如字母 E 出现的频率),容易被频率分析法破解。
- 已知明文攻击:只需要知道两个对应的密文-明文对,就可以建立方程组解出 $a$ 和 $b$。
相关链接:
- euclidean-algorithm (用于求逆元)