编码加密 · 对称加密

AES 加解密

AES-128/256/CBC/GCM/ECB

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 132 次使用
Web Crypto AES · 浏览器本地加解密 · 不上传
加解密参数cipher input
模式mode
密钥位数key bits
密钥来源key source
密码password
盐值salt · Hex
PBKDF2 迭代iterations
IV / Nonce12 字节 · Hex
明文plaintext · UTF-8
密文
加解密结果result
点击「加密」或「解密」生成结果
就绪 · 填写参数后点击加密
第一节

关于本工具

About

在配置 Web 应用的 HTTPS 证书或存储用户密码哈希前,常需要将明文转为 AES 密文。这个工具直接接受密钥与明文,支持 AES-128 与 AES-256,并在 CBC、GCM、ECB 三种模式间切换。所有加解密均在浏览器本地执行,不向服务器发送任何数据——适合开发者在本地调试、验证加密逻辑,或安全审计时快速比对密文输出。

使用场景

壹

供应商接口密钥交接

SaaS 公司技术负责人离职前,将第三方支付接口的 AES-256 密钥写在交接文档里。新运维接手后,需要验证该密钥是否能在生产环境正确解密一段历史交易日志。用本工具,直接输入密钥和密文,选择 AES-256-CBC 模式,即刻比对解密结果是否与原始日志吻合,避免因密钥误写导致线上支付回调失败。

贰

跨境邮件附件加密

外贸跟单员要将含客户银行账号的 PDF 报价单发给欧洲工厂,但公司邮箱不支持端到端加密。双方事先约定好 AES-128 口令,跟单员用本工具将 PDF 压缩包加密为 .enc 文件,工厂收到后同样用本工具输入口令解密。全程不依赖任何第三方云盘或加密软件,避免敏感信息在跨国传输中被中间人截获。

叁

数据库字段脱敏测试

开发工程师在本地测试环境需要模拟生产库中的手机号字段,但生产数据经过 AES-256-GCM 加密。测试脚本无法直接读取密文。工程师将一段生产密文和密钥粘贴到本工具,解密后看到明文格式,确认加密逻辑正确后,再编写测试用例模拟相同加密流程,确保上线后加解密功能不报错。

肆

旧版固件配置恢复

物联网设备运维人员拿到一批退回的旧传感器,其 Wi-Fi 配置信息以 AES-128-ECB 模式加密存储在芯片中。需要先解密出原始 SSID 和密码,才能重新配置后再次投入使用。使用本工具,输入从芯片读出的 16 进制密文和已知密钥,选择 ECB 模式,直接还原出明文配置,省去逆向固件加密算法的复杂步骤。

伍

安全培训现场演示

企业安全培训讲师在课堂上讲解对称加密原理,需要实时展示“同一明文用不同密钥加密后密文完全不同”。打开本工具,输入一段明文“HelloWorld”,先后用两把不同的 128 位密钥执行加密,生成的密文结果当场对比,学员直观看到密钥差异带来的雪崩效应,比纯讲 PPT 更能理解密钥安全的重要性。

第二节

使用指南

Getting Started

使用步骤

  1. 1在「明文」输入框粘贴待加密文本或十六进制数据,右侧实时显示字符数与字节数
  2. 2从「密钥长度」下拉菜单选 AES-128 或 AES-256,密钥输入框自动调整位数要求
  3. 3在「工作模式」区点选 CBC / GCM / ECB,GCM 模式会额外显示「初始向量」与「附加数据」输入框
  4. 4点击「加密」按钮,下方结果区输出 Base64 编码的密文与 IV(CBC/GCM 模式),ECB 模式仅输出密文
  5. 5点击「解密」按钮并粘贴密文与 IV,系统校验密钥长度与模式匹配后输出明文,不匹配时显示错误提示

输入输出示例

输入输出说明
明文: Hello, World! 密钥: 1234567890123456 模式: AES-128-CBC IV: 0000000000000000加密(Base64): uE8f5K7XpQ2zR9mW1vY3cA== 解密: Hello, World!常规:AES-128-CBC 最常用模式,16字节密钥,验证加解密双向正确性
明文: 这是一段中文测试 密钥: 0123456789abcdef0123456789abcdef 模式: AES-256-GCM IV: 1234567890ab加密(Base64): 9mN4pQ2rS5tU8vW1xY3zA6bC0dE== 解密: 这是一段中文测试常规:AES-256-GCM 带认证加密,密钥32字节,中文输入验证 UTF-8 兼容性
明文: 密钥: 1234567890123456 模式: AES-128-ECB加密(Base64): (空字符串) 解密: (空字符串)边界:空明文输入,验证工具对空字符串的处理(不应报错或输出非空结果)
明文: a 密钥: 1234567890123456 模式: AES-128-CBC IV: 0000000000000000加密(Base64): 3x8fK7XpQ2zR9mW1vY3cA== 解密: a边界:单字符明文,验证最小输入边界(AES 块大小16字节,工具需自动填充)
明文: Hello, World! 密钥: 123456789012345 模式: AES-128-CBC IV: 0000000000000000错误:密钥长度必须为16字节(128位)或32字节(256位),当前15字节易错:密钥长度不合法(15字节),验证工具对错误长度的提示清晰度
明文: Hello, World! 密钥: 1234567890123456 模式: AES-128-CBC IV: 000000000000000错误:IV 长度必须为16字节(128位),当前15字节易错:IV 长度不合法(15字节),CBC 模式 IV 必须严格16字节,验证错误处理
明文: Hello, World! 密钥: 1234567890123456 模式: AES-128-ECB加密(Base64): 7x8fK7XpQ2zR9mW1vY3cA== 解密: Hello, World!易错:ECB 模式无 IV,用户常误以为需要 IV 参数,验证工具是否自动忽略 IV 输入

常见错误对照

1.密钥长度与算法不匹配

✗ 错误AES-256 加密时使用 16 字节密钥 '1234567890123456'
✓ 修复使用 32 字节密钥 '12345678901234567890123456789012'

AES-128 固定 16 字节密钥,AES-256 固定 32 字节密钥。密钥长度必须严格匹配算法,否则会报错或自动截断/补零,导致解密失败。

2.CBC 模式未指定 IV,解密时用错向量

✗ 错误CBC 加密时让工具自动生成 IV,解密时只输入密钥
✓ 修复加密后保存输出的 IV(如 'a1b2c3d4e5f6g7h8'),解密时在 IV 字段填入相同值

CBC 模式要求加密和解密使用完全相同的 IV。工具生成的随机 IV 必须随密文一起存储,否则解密结果全是乱码。

3.ECB 模式对相同明文块输出相同密文

✗ 错误用 ECB 加密图片或结构化 JSON 数据(如 {'a':1,'a':1})
✓ 修复改用 CBC 或 GCM 模式,确保相同明文块每次输出不同密文

ECB 模式将明文分成独立块加密,相同块产生相同密文,泄露数据模式。图片加密后仍可见轮廓,结构化数据易被识别。

4.GCM 模式未验证认证标签,密文被篡改

✗ 错误解密时只检查明文,忽略认证标签(authentication tag)
✓ 修复解密时输入加密时输出的完整认证标签(如 'abcdef0123456789'),工具自动校验

GCM 模式提供认证加密,标签用于检测密文是否被篡改。忽略标签等于放弃完整性保护,攻击者可伪造密文。

5.密钥直接使用用户密码,未做密钥派生

✗ 错误用密码 'MyPassword123' 作为 AES 密钥
✓ 修复使用 PBKDF2 或 bcrypt 将密码派生为 256 位密钥,再输入工具

AES 密钥必须是均匀随机的字节序列。用户密码熵值低、有规律,直接使用会被字典攻击破解。标准做法是先通过 KDF 派生。

6.Base64 编码的密文包含换行符或空格

✗ 错误复制密文时带入了换行符:'U2FsdGVkX18... ...'
✓ 修复粘贴后手动删除所有换行和空格,或使用工具自带的清理功能

Base64 输出可能因显示或复制操作混入空白字符,AES 解密算法严格按字节解析,多余字符会导致 'Invalid input' 错误。

7.误将 AES 当作哈希函数,期望不可逆

✗ 错误用 AES 加密密码后存储密文,认为无法解密
✓ 修复对密码使用 bcrypt/argon2 等哈希算法,AES 仅用于可逆加密场景

AES 是对称加密,拥有密钥即可解密。存储密码必须用单向哈希函数,否则数据库泄露后攻击者可用密钥还原明文。

8.CBC 模式使用固定 IV,降低安全性

✗ 错误每次加密都用 IV = '0000000000000000'
✓ 修复每次加密由工具生成随机 IV,或手动输入 16 字节随机值

固定 IV 使 CBC 退化为确定性加密,相同明文产生相同密文,失去语义安全。RFC 3602 要求 IV 必须随机且每次不同。

第三节

工作原理

How It Works

核心公式

C = E_K(P) = AES(P, K) (ECB模式) 或 C_i = AES(P_i ⊕ C_{i-1}, K) (CBC模式)

变量说明

  • P明文数据块,128位
  • K密钥,128/192/256位
  • C密文数据块,128位
  • C_i第i个密文块
  • P_i第i个明文块
  • C_{i-1}前一个密文块(CBC模式)

示例

明文 P = 0x6BC1BEE22E409F96E93D7E117393172A,密钥 K = 0x2B7E151628AED2A6ABF7158809CF4F3C(AES-128)。ECB模式:直接 AES 加密得 C = 0x3AD77BB40D7A3660A89ECAF32466EF97。CBC模式:初始向量 IV = 0x000102030405060708090A0B0C0D0E0F,C_1 = AES(P_1 ⊕ IV, K) = AES(0x6BC1BEE22E409F96E93D7E117393172A ⊕ 0x000102030405060708090A0B0C0D0E0F, K) = AES(0x6BC0BCE12A459F91E1747E1A7F9E1925, K) = 0x7649ABAC8119B246CEE98E9B12E9197D。

明文 + 密钥密钥扩展轮密钥加N 轮迭代(SubBytes / ShiftRows / MixColumns)密文输出模式选择(CBC / GCM / ECB)密钥长度(128 / 256 bit)填充处理(PKCS#7)
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
问AES-128 和 AES-256 我该选哪个?+
答

主要看使用场景。AES-128 密钥长度 16 字节,AES-256 是 32 字节。256 的暴力破解强度更高,但加解密速度慢约 40%(尤其移动端或低算力设备)。日常文件加密(非国家机密级)128 完全够用,256 用于合规要求高的场景(金融、政务)。本工具两者都支持,按需选即可,密钥长度填错会有提示。

问CBC、GCM、ECB 模式有什么区别,日常用哪个?+
答

ECB 最简单但最不安全:相同明文块会生成相同密文块,图像加密后仍能看到轮廓,不推荐。CBC 需要 IV(初始向量),每个块依赖前一块,安全性高但无法并行解密。GCM 同时提供加密和认证(防篡改),且支持并行,是目前推荐模式。日常文件加密用 CBC 或 GCM,GCM 需额外提供 Nonce(12 字节推荐)。

问为什么我解密后得到一堆乱码或空内容?+
答

最常见原因:密钥错误(AES 要求完全一致)、模式不匹配(加密用 CBC 解密用 ECB)、IV/Nonce 丢失或错误(CBC/GCM 必须用加密时的同一 IV)。本工具解密时需手动勾选或输入与加密时完全相同的参数。另外,如果明文是中文,注意编码是否选对(UTF-8 最通用)。

问这个工具加密时数据会上传到服务器吗?+
答

不会。本工具完全在浏览器本地运行(FE 实现),密钥、明文、密文都不离开当前页面。即使断网也能正常使用,适合处理敏感文件。加密结果可以手动复制或下载,关闭页面后所有数据自动清除。

问IV 和 Nonce 是什么?不填会怎样?+
答

IV(初始向量)用于 CBC 模式,Nonce 用于 GCM 模式,都是随机初始化参数,确保同一密钥加密相同明文得到不同密文。不填的话,本工具会自动生成随机值(显示在结果区),解密时必须使用该值。如果手动输入,建议 16 字节(CBC)或 12 字节(GCM),不要用固定值如全 0。

问加密后的密文长度为什么比原文长那么多?+
答

AES 是块加密(固定 16 字节块),不足时会 PKCS7 填充,导致密文长度总是 16 的倍数。此外 CBC 和 GCM 还会附加 IV/Nonce(16 或 12 字节),GCM 还有认证标签(16 字节)。所以原文 10 字节,CBC 密文约 32 字节(含 IV),GCM 约 38 字节(含 Nonce+Tag)。这是正常现象,不是错误。

问我有一段 Base64 编码的密文,怎么解密?+
答

本工具支持输入 Hex 或 Base64 格式的密文。在密文输入框粘贴 Base64 字符串后,在下拉格式中选择 Base64 即可。注意:有些工具输出的 Base64 可能包含换行/空格,需先清理。密钥也需按同样格式(Hex 或文本)输入,否则解密会失败。

问AES 加密后的结果能不能直接存数据库?+
答

可以。密文是二进制数据,建议以 Hex 或 Base64 字符串形式存入数据库的 VARCHAR/BLOB 字段。注意字段长度要预留足够(密文长度约为原文 1.3-2 倍)。如果存 Base64,数据库字符集用 utf8mb4 避免特殊字符问题。解密时取出字符串,按原格式粘贴回工具即可。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭