123问免费工具与知识服务
123问工具大全› 工具大全› 加密编码› AES加解密

🔒 AES加解密

Web Crypto API · 五种模式 · Base64/Hex输出

AES加解密常见问题

AES是什么?

AES(高级加密标准)是最常用的对称加密算法,由NIST发布,取代了DES。支持128、192、256位密钥长度,广泛应用于HTTPS、Wi-Fi、文件加密、数据库加密等场景。

CBC和ECB有什么区别?

CBC(密文分组链接)模式需要IV向量,每个明文块先与上一密文块异或再加密,相同的明文在不同位置会得到不同密文,安全性高。ECB(电子密码本)模式不使用IV,相同明文块永远产生相同密文,容易泄露格式信息,不推荐用于敏感数据。

如何选择密钥长度?

128位已足够安全且速度最快;192位是折中选择;256位安全性最高但速度稍慢。密钥至少16字节(128位),工具会自动根据密钥长度选择对应位宽,超过32字节会截断。

IV向量是什么?一定要填吗?

IV(初始化向量)是CBC/CFB/OFB/CTR模式需要的一个随机种子,长度固定16字节,作用是让每次加密结果不同。ECB模式不需要IV。解密时必须使用与加密时相同的IV,否则解不出来。

AES加密后的结果为什么不是固定长度?

AES是按128位(16字节)分块加密的,不足一块需要补满(通常是PKCS7填充),所以密文长度是最接近明文的16字节整数倍。用Base64或Hex表示后长度也会相应增加。

Base64和Hex输出有什么区别?

Base64用64个字符表示二进制,长度约为明文的4/3倍,更紧凑适合传输存储;Hex用十六进制每字节2字符,长度正好是明文的2倍,更直观方便阅读和程序处理。两者只是表示方式不同,内容一致。

AES是单向的还是可逆的?

AES是对称加密,可逆。用同一个密钥加密和解密,属于"有密钥就能还原"的加密。它和MD5/SHA这类不可逆的哈希完全是两回事,别混淆。

网页版AES安全吗?

本工具使用浏览器内置的Web Crypto API,密钥和明文都在本地浏览器执行,不会上传到服务器,相对安全。但要注意,任何网页加密都受浏览器环境和脚本注入风险影响,传输敏感数据仍建议走HTTPS。

AES加解密 - 示例演示

示例一:CBC模式加密一段文字

输入:明文"Hello, AES加密测试!",密钥"1234567890abcdef",CBC模式,Base64输出
结果:得到的密文为一段Base64字符串,用同一密钥和IV解密可还原原文
这是最常见的用法。注意IV要和密文一起保存,解密时缺了IV就还原不了。

示例二:256位密钥 + CTR模式

输入:明文"Secure Data",密钥"this-is-a-256-bit-secret-key-123"(32字节),CTR模式,Hex输出
结果:CTR模式将计数器与密钥流异或,密文长度与明文等长(无需填充),Hex输出长度正好是明文UTF-8字节数的2倍
CTR是流式工作模式,支持并行加密,适合大文件和数据流加密场景。

示例三:ECB模式演示风险

输入:明文"AAAAAAAAAAAAAAAA"(16个A),密钥任意16字节,ECB模式
结果:16字节的A正好是一整块,密文较短;若明文是32个A则会分成两块,且两块密文完全相同
这正是ECB模式的安全隐患——相同明文块产生相同密文块,从中能看出明文的重复结构,所以不推荐用于真实数据。

AES加解密深度解读

AES分组密码是怎么工作的?

AES把数据按128位(16字节)分成一个个固定大小的块,逐块加密,因此叫"分组密码"。密钥长度决定加密轮数:128位10轮、192位12轮、256位14轮。

每一轮里做字节代换(S盒)、行移位、列混合、轮密钥加四步变换,把明文和密钥彻底搅在一起,最终输出密文。

AES密钥长度与加密轮数对照
密钥长度密钥字节加密轮数安全等级
AES-12816字节10轮足够安全,速度最快
AES-19224字节12轮折中
AES-25632字节14轮最高安全,速度稍慢

五种工作模式到底差在哪?

分组密码本身只能加密固定块,要加密任意长度的数据就得靠"工作模式"把它们串起来。

AES常用工作模式对比
模式是否需要IV是否并行特点与用途
ECB不需要可并行相同明文块产出相同密文,有格式泄露风险,尽量不用
CBC需要(16字节)不可并行加密前异或上一块密文,最常用,安全性好
CFB需要不可并行把上一密文再加密后与明文异或,可做流式
OFB需要不可并行用密钥流异或明文,错误不会传播
CTR需要(计数器)可并行计数器逐块加一,流式工作,适合高速场景

一句话总结:日常推荐CBC,高速/大文件推荐CTR,需要兼容旧系统才考虑ECB。

为什么同一条明文每次加密结果不一样?

关键在于IV。CBC等模式要求每次加密用不同的随机IV,IV参与第一个块的运算,进而影响后面所有块,所以即使明文完全相同,只要IV不同,密文就不同。

  • IV必须随机且每次不同,防止"重放"和模式检测攻击。
  • IV不需要保密,通常直接拼在密文前面一起发送给接收方。
  • 密钥才是真正需要保密的,IV泄露不影响安全性。
  • ECB模式没有IV,所以它做不到"每次结果不同",这也是它不推荐的原因之一。

AES加密的常见坑

  • 密钥和IV长度混淆:AES密钥是16/24/32字节,IV固定16字节,别把两者搞反。
  • 忘记保存IV:解密需要和加密时一致的IV,丢了就解不开。
  • 用ECB加密真实数据:能用但不安全,改CBC或GCM。
  • 把Base64/Hex当加密:它们只是编码,没有任何保密性,AES才是加密。
  • 密钥太弱:用"123456"这类弱密钥,AES再强也白搭。

AES加解密参考数据

同一明文在不同模式下的典型输出长度(UTF-8)

明文长度CBC密文(Base64)CTR密文(Base64)Hex长度
1字节16字节→24字符1字节→4字符32字符
15字节16字节→24字符15字节→20字符30字符
16字节32字节→44字符16字节→24字符32字符
100字节112字节→152字符100字节→136字符200字符

AES与DES/哈希简单对比

算法类型密钥/长度可逆用途
AES对称加密128/192/256位可逆数据加密
DES对称加密56位可逆已淘汰,教学
MD5哈希128位摘要不可逆校验
SHA-256哈希256位摘要不可逆校验/签名

使用说明

使用方法

1. 输入待加密/解密的文本。

2. 输入密钥(至少16字符对应128位)。

3. 选择加密模式(CBC需填写IV)。

4. 选择输出格式(Base64/Hex)。

5. 点击加密或解密按钮。

分享工具: Facebook Twitter 微博 复制链接