EzDev

Aes 加密/解密

在浏览器本地使用 AES-GCM 加密解密文本,支持 128、192、256 位密钥及 PBKDF2 密码派生,明文和密钥不上传服务器。
向量由固定96位组成,需要同密钥一起保存。

AES 加密是什么

AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法:加密和解密使用同一把密钥。它可以把原始文本转换成不可直接阅读的密文,持有正确密钥的人才能还原内容。AES 以 Rijndael 算法为基础,于 2001 年成为美国联邦信息处理标准,支持 128、192、256 位密钥,分组大小均为 128 位。AES 标准说明

本工具用于文本的 AES-GCM 加密与解密,支持中文、英文、数字和多行内容。计算由浏览器原生 Web Crypto API 在本地完成,不调用服务器加密接口,也不会自动保存输入草稿。它适合学习参数含义、处理文本及核对兼容的加密结果,不提供文件加密、密钥托管或密码找回功能。

本工具采用的加密方法

AES-GCM:加密并校验内容

GCM 是 AES 的一种工作模式。本工具固定使用 AES-GCM,不提供 ECB、CBC 等模式切换。它在加密文本的同时生成认证标签,用于解密时检查密文及相关参数是否匹配;本工具使用 128 位认证标签。

加密时需要密钥和初始化向量 IV,也可以填写附加消息 AAD。IV 在同一密钥下不能重复使用;AAD 参与校验,但不会被加密。解密时必须提供与加密时一致的参数,否则无法通过校验。AES-GCM 参数说明

两种密钥输入方式

输入方式适用情况需要提供的内容
自行输入已有符合长度要求的 AES 密钥,或希望使用随机密钥十六进制密钥、IV,以及可选的 AAD
密码派生希望使用自己记得住的密码密码、盐值、迭代次数、密钥位数、IV,以及可选的 AAD

「自行输入」直接使用十六进制密钥,不会把普通文本密码自动转换成 AES 密钥。「密码派生」则使用 PBKDF2-SHA256,将密码与盐值经过多次计算后派生为指定长度的 AES 密钥。盐值用于区分不同的派生过程,迭代计算用于增加尝试密码的成本,但不能把短密码变成难以猜中的密码。PBKDF2 参数说明

参数如何填写

参数格式与要求解密时的要求
密钥位数支持 AES-128、AES-192、AES-256与加密时一致
自行输入密钥只包含 0–9、a–f,字母大小写均可;不带 0x 前缀、空格或分隔符使用相同密钥
初始化向量 IV固定为 96 位,即 12 字节、24 个十六进制字符,可点击「随机」生成填写加密时使用的 IV,不能重新随机生成
密码派生密钥自行输入文本密码,空格和大小写都会影响结果使用完全相同的密码
盐值 Salt仅密码派生时使用;至少 16 字节,即 32 个十六进制字符使用加密时的盐值
迭代次数密码派生时可选 600000、800000、1000000、1200000 次与加密时一致
附加消息 AAD可留空;用于校验的文本,不会被加密与加密时一致,留空也必须保持一致
输入内容加密时填写明文,解密时填写本工具对应格式的 Base64 密文粘贴完整内容,避免遗漏或修改字符

自行输入密钥时,各位数对应的长度如下:

AES 密钥位数密钥字节数十六进制字符数
128 位16 字节32 个字符
192 位24 字节48 个字符
256 位32 字节64 个字符

IV 和盐值不是密码,可以与密文一起保存;密钥或派生密码则需要保密。盐值与 IV 的用途不同,不能互相替代。自行输入密钥时,盐值和迭代次数不参与计算。

使用方法

本工具会在输入或配置变化后自动更新结果,无需点击执行按钮。请先把参数填写完整,确认输出内容为成功结果后再复制或下载。

使用随机密钥加密

  1. 将「转换方式」设为「加密」,「输入密钥方式」设为「自行输入」。
  2. 选择密钥位数,例如 AES-256 位。
  3. 点击 IV 输入框旁的「随机」,生成本次使用的初始化向量。
  4. 点击密钥输入框旁的「随机」,生成符合当前位数的密钥;也可以填写自己已有的十六进制密钥。
  5. 按需填写 AAD,不需要时留空;盐值无需填写。
  6. 在「输入内容」中填写原始文本,等待输出结果更新。
  7. 保存密文、密钥位数、密钥、IV 和 AAD。只有密文而没有正确密钥及必要参数,将无法解密。

使用自定义密码加密

  1. 选择「加密」,再将密钥方式设为「密码派生」。
  2. 选择密钥位数,并填写自己的密码。
  3. 选择迭代次数。次数越多,计算耗时通常越长,手机端可能需要更久。
  4. 切换到密码派生时会自动生成盐值,记录该值;每次独立加密建议使用新的随机盐值。
  5. 点击「随机」生成新的 IV,按需填写 AAD。
  6. 输入明文,等待输出更新。除密文外,还需记录密码、密钥位数、盐值、迭代次数、IV 和 AAD。

解密已有内容

  1. 先选择「解密」,再填写参数。 切换加密 / 解密方向会清空原有输入与配置,请提前保存需要的内容。
  2. 选择加密时采用的密钥方式与密钥位数。
  3. 自行输入方式填写原密钥;密码派生方式填写原密码、原盐值和原迭代次数。切换到密码派生后自动生成的盐值必须替换成加密时记录的值。
  4. 填入原 IV 和原 AAD,不要为解密重新生成 IV 或盐值。
  5. 将完整 Base64 密文粘贴到「输入内容」,等待「输出结果」显示原始文本。

示例与通用操作

首次使用可以先点击「示例」:

  • 在加密模式下,示例会使用 AES-256、随机密钥和随机 IV,加密文本 www.ezdev.cn。
  • 在解密模式下,示例会生成一组匹配的密文、密钥和 IV,解密后得到 www.ezdev.cn。
  • 示例使用随机参数,每次密文可能不同,这是正常现象。示例会覆盖当前相关输入,请先保存自己的内容。

「复制」复制当前输出结果。「下载」保存包含算法、操作、输入、输出及参数的 JSON 内容;下载记录中包含明文和密钥或派生密码,不是加密备份文件,请妥善保存,不要把整份记录当作安全密文直接发送给他人。「清空」会移除输入、输出和参数,并恢复默认的 AES-128、自行输入密钥配置;当前加密 / 解密方向保留。

输出格式与其他工具的兼容性

明文先按 UTF-8 编码,AES-GCM 输出的密文与 16 字节认证标签拼接后,再以标准 Base64 字符串展示。Base64 只是为了让二进制结果便于复制,本身不提供保密性。

输出字符串不包含 IV、盐值、迭代次数、密钥位数或 AAD,这些参数需要另外记录。下载内容虽然包含这些字段,但工具没有 JSON 文件导入功能,解密时仍需把相应参数填入表单。

与其他程序互通时,除了密钥一致,还要确认以下约定相同:

  • 使用 AES-GCM,而非 AES-CBC、AES-ECB 等其他模式。
  • IV 为 12 字节,认证标签为 16 字节,标签拼接在密文之后。
  • 文本及 AAD 使用 UTF-8,密文使用标准 Base64,而非十六进制或 Base64URL。
  • 使用密码派生时,双方均采用 PBKDF2-SHA256,并使用相同的密码、盐值、迭代次数和派生密钥位数。

某些工具会把 IV、盐值或认证标签放在独立字段中,或者采用自己的封装格式,不能仅凭「都支持 AES」就直接互相解密。

常见问题

为什么提示 IV 或密钥长度不正确?

请按十六进制字符数检查,而不是按普通密码长度填写。IV 必须为 24 个十六进制字符;AES-256 的直接输入密钥必须为 64 个十六进制字符。切换密钥位数后,原来的密钥不会自动变长,需要重新生成或填写。

密码正确,为什么仍然无法解密?

除密码外,还需核对密钥位数、IV、AAD,以及密码派生时的盐值和迭代次数。密文被截断、认证标签缺失,或 AAD 多出空格、换行,也会造成失败。认证失败通常不能单凭错误消息判断究竟是哪一个参数不匹配。

为什么提示浏览器加密功能需要安全连接?

本工具调用浏览器内置 Web Crypto API,需要支持该能力的浏览器和安全访问环境。请使用 HTTPS 打开工具页面;本地开发可使用 http://localhost:40521。在手机上通过局域网 IP 的普通 HTTP 地址访问开发服务时,加密功能可能不可用。浏览器加密 API 的环境要求

使用 AES-256,短密码就足够安全吗?

AES-256 表示派生或直接输入的密钥长度,不代表用户输入的密码拥有同样的强度。密码派生可以增加穷举成本,但仍应使用较长、不易猜中的独立密码。

可以把密文和密码一起发送吗?

可以操作,但拿到两者并知道必要参数的人或平台也能解密。需要保护内容时,应让密钥或密码保持私密,并通过独立渠道传递。使用公开算法并不会使 AES 失效,关键在于密钥是否保密。

使用注意

  • 同一密钥下不能重复使用 IV。开始独立加密一条新消息时,应主动生成新的 IV;本工具不会在每次修改正文时自动替换 IV。
  • AAD 不会被加密,不要把需要保密的正文放在 AAD 中。
  • 刷新、离开页面或清空后,当前内容不会从本地草稿恢复;请提前保存需要的密文与参数。
  • 密钥或派生密码遗失后,本工具无法找回;请自行管理备份和传递方式。
同类工具