AES加密解密 收藏
AES加密解密
⚠️ 重要提示:加密和解密必须使用相同的IV!加密成功后请保存返回的IV值,解密时需要输入相同的IV。
AES是一种对称加密算法,被广泛用于保护数据安全。支持多种加密模式,包括CBC、CFB、CTR、OFB和ECB等,每种模式适用不同的场景。在AES中,数据以固定大小的块(常用128位)进行加密。
本工具支持AES-128/192/256三种密钥长度,您可以根据安全需求选择合适的强度。通常AES-256提供最高级别的安全性。
? AES加密模式对比
| 加密模式 | 是否需要IV | 主要特点 | 安全性评级 | 推荐程度 |
|---|---|---|---|---|
| ECB (Electronic Codebook) | ❌ | 最简单,每个分组独立加密 | ❌ 极低 相同明文产生相同密文 | ? 不推荐 敏感数据避免使用 |
| CBC (Cipher Block Chaining) | ✅ | 每个分组依赖上个分组,最常用模式 | ✅ 高 业界标准推荐 | ⭐⭐⭐⭐ 推荐 大多数应用首选 |
| CTR (Counter Mode) | ✅ | 将AES变为流加密,支持并行处理 | ✅ 高 需保证计数器不重复 | ⭐⭐⭐⭐ 推荐 高性能场景优选 |
| CFB (Cipher Feedback) | ✅ | 类似流加密,可处理小于分组的数据 | ⚠️ 较高 需注意使用场景 | ⭐⭐ 一般 特定场景使用 |
| OFB (Output Feedback) | ✅ | 与CFB类似,但易受同步攻击 | ⚠️ 较低 有同步安全风险 | ⭐ 不推荐 建议使用其他模式 |
? AES填充方式对比
| 填充方式 | 工作原理 | 优点 | 缺点 | 推荐程度 |
|---|---|---|---|---|
| PKCS#7 | 用缺少字节数N填充N个字节 例如:缺少3字节则填充"0x03 0x03 0x03" | ✅ 通用性最强 几乎所有库的默认选择 | ❌ 占用额外字节 最多增加16字节 | ⭐⭐⭐⭐ 推荐 默认首选 |
| ZeroPadding | 用0x00字节填充 例如:"data" → "data\x00\x00\x00" | ✅ 实现简单 计算开销小 | ❌ 安全性问题 末尾有0x00时解密不准 | ⭐⭐ 特殊场景 谨慎使用 |
| NoPadding | 不填充,需手动保证数据长度是16的倍数 长度必须为16、32、48...字节 | ✅ 无额外字节 数据大小不变 | ❌ 使用受限 长度要求严格 | ⭐ 仅限固定长度 特定场景使用 |
?️ 安全使用建议 (请务必遵守!)
使用强随机数生成器生成密钥和IV
本工具提供"生成随机密钥"和"生成随机IV"按钮,确保密钥和IV的随机性
推荐使用CBC模式而非ECB模式
ECB模式安全性较低,相同明文会产生相同密文,不推荐用于敏感数据
定期更换密钥和IV
对于长期使用的系统,建议定期更换密钥增强安全性
妥善保管密钥,避免泄露
密钥是解密数据的唯一凭证,必须严格保密,不要存储在代码或配置文件中
在生产环境中使用AES-256而非AES-128
AES-256提供更高的安全强度,适合保护敏感数据
⚠️ 再次提醒:加密时生成的IV必须保存并在解密时使用相同的IV值,否则解密将失败!
? 工具提示:Base64编码适合网络传输,HEX编码便于调试查看