简单加密算法
凯撒密码(Caesar Cipher)
安全性:极低
将明文中的每一个字母在字母表中向后(或向前)移动固定数量的位置。
如果将字母 $A-Z$ 对应为数字 $0-25$,那么加密和解密的逻辑可以用模运算(Modulo)表示:
- 加密:$E_n(x) = (x + n) \mod 26$
- 解密:$D_n(x) = (x - n) \mod 26$
其中 $x$ 是明文字母的编号,$n$ 是位移的偏移量。
使用场景:编程入门题目
ROT13(Rotate by 13 places)
安全性:极低
简单的位移密码,为凯撒密码的一个特殊变体。加密与解密使用相同的逻辑,具有对称性。
ROT13 的规则非常直观:将英文字母表中的每个字母向后移动 13 位。
- 前半部分字母 (A-M):向后移动 13 位,变为后半部分的对应字母(如 $A \to N$, $B \to O$)。
- 后半部分字母 (N-Z):向后移动 13 位,绕回字母表开头(如 $N \to A$, $O \to B$)。
使用场景:编程入门题目
复杂加密算法
异或运算(XOR)
安全性:中
根据一个数字(原文)在通过两次与同一数字(密钥)进行异或运算后,依然能得到原来的数字的特性,以及计算机对所有数据都以二进制的方式进行存储的原理,诞生的加密方式。因其为硬件层级的位运算,速度极快,效率极高。且加解密可以使用相同的逻辑,XOR 是现代高级加密算法(如 AES 和 DES)的核心组件。
如果只是简单地用一个短密钥(如 12345)重复对一段长文本进行 XOR 加密,其安全性甚至不如凯撒密码:
- 已知明文攻击:由于 $A \oplus B = C$ 推导出 $A \oplus C = B$。如果你知道一小段明文(比如文件的开头通常是固定的格式)及其对应的密文,你就能瞬间算出密钥。
- 重复密钥攻击:如果你用同一个密钥加密了两段不同的明文($C1 = P1 \oplus K$,$C2 = P2 \oplus K$),那么将两个密文进行 XOR 运算:$C1 \oplus C2 = P1 \oplus P2$。这会完全抵消掉密钥,暴露明文之间的统计特征,通过词频分析即可破解。
- 模式暴露:简单的 XOR 无法打乱数据的统计特征。如果加密图片,图片的轮廓往往在密图中依然清晰可见。
使用场景:部分小型游戏的简单加密
AES(Advanced Encryption Standard)
安全性:高
最常见的对称加密算法,加密和解密使用相同的密钥,为分组密码,分组长度只能是128位,密钥的长度可使用128位、192位或256位,可进行多轮加密,加密轮数一般随密钥长度递增,安全性也会随之上升。
AES加密会将明文和密文转化为矩阵进行运算。通过字节代换(查表操作)、行移位(逐行移位)、列混合(矩阵运算)、轮密钥加(逐位异或),并重复多轮进行加密。同理,使用逆操作进行解密。
使用场景:微信、微信小程序
DES(Data Encryption Standard)
略