AES 加密解密
免费在线 AES 加密解密 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。
结果将显示在这里...
输入 → 加密
使用指南
关于 AES
AES(Advanced Encryption Standard,高级加密标准)是美国国家标准与技术研究院(NIST)于 2001 年发布的对称加密算法,用于替代已过时的 DES 算法。AES 是目前全球最广泛使用的对称加密算法,被认为是安全、高效、可靠的加密标准。它支持 128、192、256 位三种密钥长度,广泛应用于文件加密、网络通信、数据库加密等场景。AES 已成为 TLS/SSL、VPN、磁盘加密、云存储等领域的事实标准。
使用步骤
AES 是对称加密算法,加密和解密使用相同的密钥:
加密模式选择
AES 支持多种加密模式,不同模式有不同的安全性和性能特点:
密钥长度选择
AES 支持三种密钥长度,安全性和性能各有差异:
应用场景
AES 是对称加密的事实标准,广泛应用于各种需要数据保密的场景:
常见问题
Q: AES-128 和 AES-256 哪个更好?
A: 两者都非常安全,选择取决于具体需求。AES-128:破解复杂度 2^128(约 3.4×10^38),即使用全球所有计算机也需要数十亿年。性能比 AES-256 快约 20-40%。适合大多数应用场景。AES-256:破解复杂度 2^256(约 1.2×10^77),理论上更安全,但实际上 AES-128 已经足够。美国政府用于保护“绝密”级别信息。性能略慢,但差异不大。推荐:一般应用使用 AES-128,政府、金融、医疗等高安全场景使用 AES-256。
Q: 什么是 IV(初始化向量)?为什么需要它?
A: IV(Initialization Vector)是加密过程中的随机数,用于确保相同的明文在不同次加密时产生不同的密文。为什么需要 IV:如果没有 IV,相同的明文和密钥总是产生相同的密文,攻击者可以识别重复的数据块,降低安全性。IV 的要求:1)随机性:每次加密应使用不同的随机 IV。2)不需要保密:IV 可以公开传输,通常附加在密文前面。3)长度:AES 的 IV 长度为 128 位(16 字节)。注意:ECB 模式不使用 IV,但安全性低,不推荐使用。
Q: CBC 和 GCM 模式有什么区别?
A: CBC(Cipher Block Chaining):传统的加密模式,每个明文块与前一个密文块异或后再加密。优点:安全性高,广泛支持。缺点:不能并行加密,不提供认证(需要额外的 HMAC)。GCM(Galois/Counter Mode):现代的认证加密模式,同时提供加密和认证。优点:可并行加密,性能好,防止篡改,TLS 1.3 标准。缺点:实现复杂,IV 重用会导致严重安全问题。推荐:新项目使用 GCM,传统项目使用 CBC + HMAC。
Q: 如何安全地存储和传输密钥?
A: 密钥管理是加密系统的核心,密钥泄露会导致加密失效。密钥生成:使用密码学安全的随机数生成器(CSPRNG),不要使用简单的密码或可预测的值。密钥存储:1)使用密钥管理服务(KMS),如 AWS KMS、Azure Key Vault。2)使用硬件安全模块(HSM)。3)使用密钥派生函数(如 PBKDF2、Argon2)从密码派生密钥。密钥传输:1)使用非对称加密(如 RSA)传输对称密钥。2)使用密钥交换协议(如 Diffie-Hellman)。3)通过安全通道(如 TLS)传输。最佳实践:定期轮换密钥,使用密钥版本管理,限制密钥访问权限。
Q: AES 和国密 SM4 有什么区别?
A: AES 和 SM4 都是对称加密算法,但来源和应用场景不同。AES:美国 NIST 标准(2001),全球广泛使用,支持 128/192/256 位密钥,性能优秀。SM4:中国国家密码管理局标准(2012),仅支持 128 位密钥,性能与 AES-128 相当。选择建议:国际应用使用 AES,中国关键领域(金融、政务、电信)使用 SM4 符合《密码法》要求。如果需要兼容,可以同时支持两种算法。
Q: 如何验证 AES 加密的正确性?
A: 测试向量:NIST 提供了官方的 AES 测试向量(CAVP),可以用来验证实现的正确性。对比工具:使用多个独立实现(如 OpenSSL、本工具、在线工具)加密相同的数据,对比结果是否一致。解密验证:加密后立即解密,检查是否能恢复原始数据。注意:相同的明文、密钥、IV 和模式应该产生相同的密文。如果结果不同,可能是 padding、编码或模式设置有误。
使用场景
推荐:文件加密
使用 AES 加密敏感文件是最常见的应用场景。推荐使用 AES-256-CBC 或 AES-256-GCM 模式,确保文件内容的机密性。加密时生成随机 IV,并将 IV 附加在密文前面(IV 不需要保密)。密钥可以从用户密码派生(使用 Argon2 或 PBKDF2),或使用随机生成的密钥(需要安全存储)。
- ✅ AES-256-GCM(推荐,提供认证)
- ✅ AES-256-CBC + HMAC(传统方案)
- ✅ 每次加密使用不同的随机 IV
- ✅ 使用 Argon2 或 PBKDF2 从密码派生密钥
- ❌ 避免 ECB 模式
推荐:数据库字段加密
加密数据库中的敏感字段(如身份证号、银行卡号、密码)可以防止数据泄露。推荐使用 AES-256-GCM 或 AES-256-CBC 模式。密钥应存储在密钥管理服务(KMS)中,不要硬编码在代码里。每条记录使用不同的 IV,IV 可以存储在数据库中(与密文一起)。对于需要搜索的字段,可以使用确定性加密(如 AES-SIV)或加密索引。
- ✅ AES-256-GCM(推荐)
- ✅ 使用 KMS 管理密钥
- ✅ 每条记录使用不同的 IV
- ✅ 定期轮换密钥
- 💡 考虑使用数据库内置的加密功能(如 MySQL TDE)
推荐:API 数据传输加密
虽然 HTTPS(TLS)已经提供了传输层加密,但对于高敏感数据,可以在应用层再次加密。使用 AES-256-GCM 加密请求和响应的敏感字段,密钥通过安全通道协商(如 Diffie-Hellman)或预共享。这种“双重加密”可以防止中间人攻击和 TLS 降级攻击。
- ✅ AES-256-GCM(推荐)
- ✅ 使用密钥交换协议协商密钥
- ✅ 结合 HTTPS 使用(双重保护)
- ✅ 添加时间戳防止重放攻击
- 💡 考虑使用 JWE(JSON Web Encryption)标准
推荐:云存储文件加密
上传到云存储(如 AWS S3、阿里云 OSS)的文件应该在客户端加密后再上传,确保云服务提供商无法访问明文。使用 AES-256-GCM 加密文件,密钥由客户端管理(不上传到云端)。加密后的文件可以安全地存储在任何云服务上,即使云服务被攻破,攻击者也无法解密文件。
- ✅ AES-256-GCM(推荐)
- ✅ 客户端加密,密钥不上传
- ✅ 使用密钥派生函数从密码生成密钥
- ✅ 考虑使用云服务的客户端加密 SDK
- 💡 备份密钥,丢失密钥将无法恢复数据
推荐:磁盘/分区加密
全盘加密可以保护设备丢失或被盗时的数据安全。Windows 的 BitLocker、macOS 的 FileVault、Linux 的 LUKS 都使用 AES 加密。推荐使用 AES-256-XTS 模式(专为磁盘加密设计)。密钥通常从用户密码派生,或使用 TPM(可信平台模块)存储。全盘加密对性能影响很小(现代 CPU 有 AES 硬件加速)。
- ✅ AES-256-XTS(磁盘加密专用模式)
- ✅ 使用操作系统内置的加密工具
- ✅ 启用 TPM 提升安全性
- ✅ 设置强密码或使用硬件密钥
- 💡 备份恢复密钥,避免数据丢失
不推荐:密码存储
最佳实践建议
- 优先使用 AES-256-GCM 模式,它同时提供加密和认证,防止数据被篡改。
- 每次加密必须使用不同的随机 IV,IV 可以公开传输,通常附加在密文前面。
- 避免使用 ECB 模式,它存在严重的安全隐患,相同的明文块会产生相同的密文块。
- 密钥管理至关重要,使用 KMS 或 HSM 管理密钥,定期轮换密钥,限制访问权限。
- 对于密码派生密钥,使用 Argon2 或 PBKDF2,不要直接使用用户密码作为密钥。
- 结合 HTTPS 使用,提供传输层和应用层的双重保护。