AES加密解密
选项设置
相关知识
AES (Advanced Encryption Standard) 是一种对称加密算法,也是当前最流行的加密算法之一,由美国国家标准和技术研究所 (NIST) 标准化,已经成为了国际标准。它的加密密钥长度可以为 128 位、192 位或 256 位,其中 128 位密钥版本最为流行。AES 是一种分组密码,将明文分成 128 位一组,然后分别进行加密,加密方式包括替换、置换、线性变换等基本操作。通过多轮迭代加密,在满足密钥安全性的前提下,能够提供很高的加密强度,以防止恶意攻击者的攻击。在许多场景下,AES 已经被广泛应用,例如数据传输、文件加密、数据库加密等等。
AES 加密模式对比
模式 | 是否需要 IV | 特点 | 安全性 | 推荐程度 |
---|---|---|---|---|
ECB (Electronic Codebook) | ❌ | 最简单,每个分组独立加密 | ❌ 极低(同块明文→同块密文) | 🚫 不推荐 |
CBC (Cipher Block Chaining) | ✅ | 每个分组依赖上个分组,常用 | ✅ 高 | ⭐⭐⭐⭐ 推荐 |
CTR (Counter) | ✅ | 将 AES 变成流加密,支持并行 | ✅ 高(若计数器不重复) | ⭐⭐⭐⭐ 推荐 |
CFB (Cipher Feedback) | ✅ | 类似流加密,能处理小于分组的数据 | ✅ 较高 | ⭐⭐ 一般 |
OFB (Output Feedback) | ✅ | 与 CFB 类似,易受同步攻击 | ⚠️ 较低 | ⭐ 一般,不推荐 |
AES 填充方式对比
填充方式 | 说明 | 优点 | 缺点 | 推荐程度 |
---|---|---|---|---|
PKCS#7 | 用缺少字节数 N 填充 N 个字节 | ✅ 通用,几乎所有库默认 | ❌ 占用额外字节 | ⭐⭐⭐⭐ 推荐 |
ZeroPadding | 用 0x00 填充 | ✅ 简单 | ❌ 末尾有 0x00 时可能解密不准 | ⭐⭐ 特殊场景 |
NoPadding | 不填充,需手动保证数据长度是 16 的倍数 | ✅ 无额外字节 | ❌ 使用受限 | ⭐ 仅限固定长度 |