AES 加密解密工具

专业级 AES 对称加密,支持 6 种加密模式和 5 种填充方式

加密配置

输入内容
字符数: 0
字节数: 0
转换结果
字符数: 0
字节数: 0

什么是 AES 加密?

AES(Advanced Encryption Standard,高级加密标准)是目前全球最广泛使用的对称加密算法,被美国国家安全局(NSA)批准用于保护绝密级信息。AES 由比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计的 Rijndael 算法演变而来,于 2001 年由美国国家标准与技术研究院(NIST)正式发布,用于替代已经不再安全的 DES 算法。 AES 采用分组加密方式,每组固定 128 位(16 字节),支持 128、192 和 256 位三种密钥长度,分别对应 AES-128、AES-192 和 AES-256 三个安全级别。密钥越长,安全性越高,但加解密速度会略有下降。作为对称加密算法,AES 使用相同的密钥进行加密和解密,这使得它在性能上远优于非对称加密算法。 AES 的应用场景非常广泛:在网络安全领域,TLS/SSL 协议使用 AES 保护网页浏览和电子邮件传输;在存储安全领域,BitLocker、FileVault 等磁盘加密工具采用 AES 加密用户数据;在数据库安全领域,许多数据库系统支持 AES 列级加密;在物联网领域,AES 也被广泛用于设备间的安全通信。本工具支持 AES 的全部 6 种加密模式(ECB、CBC、CFB、OFB、CTR、GCM)和 5 种填充方式,满足各种加密需求。

使用方法

基本操作

  1. 选择加密模式(推荐 GCM 模式,提供加密和完整性验证)
  2. 选择填充方式(GCM/CFB/OFB/CTR 模式自动使用无填充)
  3. 选择密钥长度(256 位安全性最高,128 位性能最好)
  4. 输入密钥或点击「生成随机密钥」自动创建
  5. 对于需要 IV 的模式,输入或生成初始化向量
  6. 在左侧输入框输入明文(加密)或密文(解密)
  7. 右侧自动显示加密或解密结果
  8. 点击「复制」按钮复制结果,或使用「交换」按钮交换输入输出

加密模式说明

GCMGalois/Counter Mode,推荐使用。提供加密和认证双重保护,无需填充,支持并行处理,适合网络传输和 TLS 协议
CBCCipher Block Chaining,经典模式。每个明文块与前一个密文块异或后再加密,需要填充和 IV,安全性好但不支持并行
CFBCipher Feedback,密码反馈模式。将分组密码转为流密码,无需填充,适合流数据加密,支持实时加解密
OFBOutput Feedback,输出反馈模式。与 CFB 类似但错误不传播,适合噪声信道,无需填充
CTRCounter,计数器模式。使用递增计数器生成密钥流,无需填充,支持完全并行加密,性能优异
ECBElectronic Codebook,不推荐使用。相同明文产生相同密文,会泄露数据模式,仅适用于加密单个数据块

填充方式说明

PKCS7PKCS#7 填充,最常用且推荐。自动填充 N 个值为 N 的字节,解密时可准确移除,无歧义
ZeroPadding零填充。不足部分用 0x00 字节填充,简单但当数据末尾本身包含零字节时会产生歧义
NoPadding无填充。要求数据长度必须是 16 字节的整数倍,适用于流模式或已知长度的数据
ISO7859ISO/IEC 7816-4 填充。第一个填充字节为 0x80,后续为 0x00,广泛用于智能卡和金融领域
ANSIX923ANSI X.923 填充。填充字节全为 0x00,最后一个字节表示填充长度,常用于金融数据交换

使用技巧

  • 密钥应使用密码学安全的随机数生成,避免使用易猜测的字符串
  • 每次加密都应使用不同的随机 IV,切勿重复使用
  • GCM 模式的 IV 推荐使用 12 字节(96 位),性能和安全性最佳
  • 对于大量数据加密,CTR 和 GCM 模式支持并行处理,速度更快
  • 密钥和 IV 可以选择十六进制、文本或 Base64 格式输入
  • 十六进制格式的密钥长度:128 位 = 32 字符,192 位 = 48 字符,256 位 = 64 字符

使用示例

基本加密

使用 CBC 模式加密中文文本

明文:Hello, 世界!
密钥:0123456789abcdef0123456789abcdef
IV:fedcba9876543210fedcba9876543210
模式:CBC / PKCS#7 / 128位
密文(十六进制):7a8b9c0d1e2f...

GCM 认证加密

使用推荐的 GCM 模式,提供加密和完整性保护

明文:敏感数据
密钥:随机生成 256 位密钥
IV:随机生成 12 字节
模式:GCM / 无填充 / 256位
密文:IV 自动拼接在密文前面

文件内容加密

加密配置文件或敏感数据

将文件内容粘贴到输入框
选择 AES-256-CBC 模式
生成并保存密钥和 IV
加密后的内容可安全存储或传输

常见问题 (FAQ)

Q: 应该选择哪种加密模式?

A: 推荐使用 GCM 模式。它不仅提供加密,还能通过 GHASH 认证标签验证数据完整性,防止密文被篡改。GCM 是 TLS 1.3 的默认加密模式,被广泛认为是最安全的 AES 模式。如果不需要完整性验证,CBC 是经典选择。CTR 适合需要高性能并行加密的场景。避免使用 ECB,因为它不安全且会泄露数据模式。

Q: 为什么 ECB 模式不安全?

A: ECB 模式对相同的明文块产生相同的密文块,这意味着加密后的数据仍然保留原始数据的模式。最著名的例子是 ECB 模式加密的图像,虽然像素值被加密,但图像的整体轮廓仍然清晰可见。此外,ECB 模式容易受到重放攻击和块替换攻击。在实际应用中,应始终使用 CBC、GCM 等更安全的模式。

Q: 密钥长度如何选择?

A: AES-256 提供最高安全性,被美国国家安全局(NSA)批准用于绝密级(TOP SECRET)信息保护,适合高安全需求场景。AES-192 提供中等安全性,适用于机密级信息。AES-128 对于一般应用已经足够安全,加解密速度略快于 256 位。量子计算时代,AES-256 被认为能够抵抗 Grover 算法的威胁,推荐优先使用。

Q: 什么是 IV?为什么需要它?

A: IV(Initialization Vector,初始化向量)是加密算法的额外输入参数,用于确保相同明文在不同加密过程中产生完全不同的密文。如果没有 IV,相同的明文总是产生相同的密文,攻击者可以通过观察密文模式推断明文信息。除 ECB 外,其他模式都需要 IV。CBC、CFB、OFB 模式需要 16 字节 IV,GCM 推荐 12 字节(96 位)IV。IV 不需要保密,但每次加密必须使用不同的随机 IV。

Q: 如何安全地存储和传输密钥?

A: 密钥是加密系统的核心,必须严格保护。存储方面:建议使用专业的密钥管理系统(KMS)或硬件安全模块(HSM),避免将密钥硬编码在代码中或明文存储在配置文件中。传输方面:必须通过安全通道(如 TLS/SSL)传输密钥,避免通过邮件、聊天工具等不安全渠道传输。密钥轮换也是重要的安全实践,定期更换密钥可以降低密钥泄露的风险。

Q: 加密后的数据为什么比原文长?

A: 密文比明文长主要有三个原因:1)填充:分组加密模式需要将数据填充到 16 字节的整数倍,即使只差一个字节也会填充一整块;2)IV:使用 CBC、GCM 等模式时,IV 通常会拼接在密文前面,增加 12-16 字节;3)编码:输出格式(十六进制或 Base64)会增加数据体积,十六进制编码会使数据翻倍,Base64 编码增加约 33%。

Q: 这个工具的加密安全吗?

A: 本工具使用 aes-js 库在浏览器端执行标准的 AES 算法,算法实现是安全的。但需要注意:1)浏览器环境的安全性不如专业的加密设备;2)密钥可能通过浏览器扩展、控制台等方式泄露;3)本工具适合学习、测试和一般用途,生产环境建议使用专业的加密服务或库。所有数据处理都在您的浏览器本地完成,不会上传到服务器。

Q: GCM 模式和其他模式有什么区别?

A: GCM(Galois/Counter Mode)是认证加密模式,与其他模式的主要区别在于:1)GCM 同时提供加密和数据完整性验证(认证),其他模式只提供加密;2)GCM 使用 12 字节 IV,其他模式通常使用 16 字节;3)GCM 加密时会在密文末尾附加认证标签,解密时会验证标签以确保数据未被篡改;4)GCM 支持并行处理,性能优于 CBC。本工具的 GCM 实现将 IV 自动拼接在密文前面,解密时自动提取。

Q: 什么情况下需要使用填充?

A: 分组加密模式(ECB、CBC)要求数据长度是 16 字节的整数倍,因此需要填充。流模式(CFB、OFB、CTR、GCM)将分组密码转换为流密码,不需要填充。如果选择流模式,本工具会自动设置为无填充。填充方式的选择:PKCS#7 是最常用且无歧义的填充方式;ISO 7816-4 和 ANSI X.923 主要用于特定行业标准;零填充简单但可能产生歧义。

Q: 如何验证加密结果是否正确?

A: 验证加密结果的最佳方法是使用相同的密钥和 IV 进行解密,看是否能还原为原始明文。具体步骤:1)记录加密时使用的密钥、IV、模式和填充方式;2)将密文粘贴到输入框,切换到解密模式;3)使用完全相同的密钥、IV、模式和填充方式;4)如果解密结果与原始明文一致,说明加密正确。GCM 模式还提供额外的完整性验证,如果密文被篡改,解密会失败。