加密设置
口令强度:—
尚未识别密钥。
裸模式说明:密文里不带任何头部,所以分组模式、密钥与 IV 都必须由解密方手动填成一致;又因为盐与迭代次数没有地方保存,裸模式固定使用「原始密钥」,不能用口令。
文本加密 / 解密
字符数:0 | UTF-8 字节数:0 B
长度:0 | —
文件加密 / 解密
点击选择文件,或把文件拖到这里(可多选)
文件只在本地读取和加密,不会上传
使用说明
怎么用
- 默认配置(AES-256-GCM + 口令 + 自描述容器)适合绝大多数场景:填一个口令,加密后把密文发给对方,对方在同一个页面粘上密文、输入同样的口令就能解开。
- 文本:左侧输入明文 →「🔒 加密(左 → 右)」得到右侧密文;把密文粘回右侧 →「🔓 解密(右 → 左)」还原明文(可以用来验证口令是否记对)。
- 文件:把文件拖进虚线框(可多选)→「🔒 加密所选文件」,每个文件会生成一个
原文件名.enc;解密时把.enc拖进来即可,如果密文里带着原文件名,解密后会自动还原。 - 解密时不需要手动选算法:自描述容器会把模式、密钥长度、迭代次数、盐、IV 都写在密文头部,本工具读到头部后会自动切好设置,你只要提供口令或原始密钥。
算法与安全设计
- 口令模式:用
PBKDF2-HMAC-SHA256(默认 60 万次迭代 + 16 字节随机盐)把口令扩展成密钥,抵抗离线暴力破解;AES 密钥用不可导出的CryptoKey形式交给浏览器内核。 - GCM 自带 128 位认证标签,并且把整个头部(算法、参数、原文件名)作为附加认证数据(AAD)参与校验:密文或头部被改一个字节,解密都会直接失败而不是给出乱码。
- CBC 属于传统模式,本身不防篡改,所以容器模式会额外用一段独立密钥做
HMAC-SHA256(先加密后认证,Encrypt-then-MAC),校验通过才会解密:口令模式下这段密钥取自 PBKDF2 输出的后半段,原始密钥模式下则用 HKDF-SHA256 从密钥派生。 - 原始密钥模式不做密钥派生:你填的密钥就是 AES 密钥,你填的 IV 就直接使用——这是为了跟其它程序对接(见下)。
- 本页不联网:没有
fetch/XMLHttpRequest/WebSocket,不用 Cookie、IndexedDB、缓存存储,也不会把明文、密文或口令写到任何地方。
密文容器格式(v1,大端序)
| 偏移 | 长度 | 字段 |
|---|---|---|
| 0 | 8 | 固定标识 AESTOOL1 |
| 8 | 1 | 版本号 0x01 |
| 9 | 1 | 分组模式:1=AES-GCM,2=AES-CBC |
| 10 | 1 | 密钥来源:1=PBKDF2 口令,2=原始密钥 |
| 11 | 1 | AES 密钥字节数:16(AES-128)或 32(AES-256) |
| 12 | 4 | PBKDF2 迭代次数(原始密钥模式为 0) |
| 16 | 2 | 盐长度(固定 16) |
| 18 | 2 | IV 长度(GCM 为 12,CBC 为 16) |
| 20 | 2 | 原文件名长度(UTF-8 字节数,可为 0) |
| 22 | 1 | 标志位(bit0:是否包含原文件名) |
| 23 | 1 | 保留,固定为 0 |
| 24 | … | 盐 ‖ IV ‖ 原文件名 |
| 之后 | … | 密文载荷:GCM 为 密文 ‖ 16 字节标签;CBC 为 密文 ‖ 32 字节 HMAC-SHA256 |
头部整体作为 GCM 的 AAD(CBC 则被 HMAC 覆盖),所以头部同样不可篡改。为了让解密方自动还原文件名,原文件名以明文存在头部里(只存文件名本身,不含路径与内容);如果文件名本身敏感,加密前先把它改成无关的名字。
与其它程序对接(取消勾选「自描述容器」=裸模式)
裸模式输出的就是纯粹的 AES 密文,不带任何头部,可以跟 OpenSSL、Node.js、Java、Python 等实现双向互通。以 AES-256-CBC 为例:
# 生成随机密钥与 IV(Linux / macOS)
KEY=$(openssl rand -hex 32); IV=$(openssl rand -hex 16)
# 加密:AES-256-CBC + PKCS#7 填充,与本工具裸模式完全一致
openssl enc -aes-256-cbc -K $KEY -iv $IV -in 明文.txt -out 密文.bin
# 解密
openssl enc -d -aes-256-cbc -K $KEY -iv $IV -in 密文.bin -out 明文.txt
- 把
$KEY的 64 个十六进制字符填进「原始密钥」,$IV的 32 个字符填进「IV」,两边就能互相解开。 - AES-CBC 的 IV 必须是 16 字节;AES-GCM 的 IV 通常是 12 字节(也接受 16 字节),GCM 的裸模式输出为
密文 ‖ 16 字节标签,与各语言标准 AEAD 实现的输出一致。 - 裸模式配合 CBC 时没有完整性校验:密钥或 IV 错了通常会因为填充错误而报错,但也有极小概率"解开"成乱码,请注意核对结果。
- 原始密钥模式支持三种写法:十六进制、Base64、或刚好 16 / 32 字节的文本;密钥长度决定用 AES-128 还是 AES-256。
口令与密钥
- 忘记口令 = 数据永久无法恢复。本页没有任何后门、没有找回机制,也没有服务器能帮你重置。
- 密钥强度决定一切。PBKDF2 只能拖慢暴力破解,救不了弱口令:建议 12 位以上、混用大小写与符号,或者点「随机口令」生成一个强口令并立刻存进密码管理器。
- 加密完成前请先确认口令记牢;加密之后本页不会保存任何口令或密钥,刷新页面设置就会清空。
能力边界
- 文件是在内存里一次性加解密的(GCM / CBC 都无法分段流式处理),建议单个文件不超过 200 MB,超大文件请用
age、gpg或 7-Zip 等本地工具。 - 处理大文件时内存占用会明显上升,请勿关闭或刷新页面;「停止」只能在一批文件的间隙生效。
- 结果不会自动写盘,必须点「下载」才会保存到你的下载目录。
- 这是个网页工具:如果电脑上已经有键盘记录器、恶意扩展或已经中毒,任何加密工具都保护不了你的明文与口令。高价值数据请使用系统级方案(BitLocker / VeraCrypt / age)。
- 可以断网使用,也可以把本页另存到本地打开(
file://下 Web Crypto 同样可用)。