加密算法记录

常见加解密算法逻辑和方式的记录,用于学习和研究。

简单加密算法

凯撒密码(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)

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy