文本加密解密
文本加密解密是用一个口令把文字变成密文、只有知道口令的人才能还原的在线工具。本页用浏览器内置的 Web Crypto,把口令经 PBKDF2-SHA256 迭代 60 万次派生为密钥,再用 AES-256-GCM 加密,密文被改动或口令错误都会直接提示解密失败。也能解开 CryptoJS 生成的 U2FsdGVkX1 开头密文。全程本地处理,文字和口令不上传。
口令一旦输错,密文就再也解不开,所以要输两遍。没有「找回口令」这回事。
加解密全部在浏览器本地用 Web Crypto 完成,文字和口令不上传、不保存;页面只记住你选的密文格式。把密文发给对方时,口令请通过另一个渠道告知。
如何使用文本加密解密
在「加密」模式输入要加密的文字,设置一个口令并在「确认口令」里再输一遍;口令越长越难被猜中,建议 12 位以上或用口令短语。
点「加密」得到 DTE1. 开头的密文,点「复制」发给对方,口令通过另一个渠道(电话、当面)告知;可先点「去解密验证」当场确认能解开。
对方打开本页切到「解密」,粘贴密文(折行、空格会自动忽略)并输入口令,点「解密」即可还原原文;口令不对或密文不完整会直接报错。
关于文本加密解密的常见问题
- 文本加密会把我的文字和口令上传到服务器吗?
- 不会。加密和解密都由浏览器内置的 Web Crypto 在你的设备上完成,文字、口令和密文都不经过网络,也不保存到本地存储;页面只记住你选的是标准格式还是兼容格式。关掉或刷新页面,输入的内容就全部清空。
- 同一段文字每次AES加密结果为什么不一样?
- 这是正常且更安全的设计。每次加密都会重新生成随机的盐和初始向量(IV),所以同样的文字、同样的口令,密文每次都不同,别人没法通过比对密文判断你是不是发了同一句话。这些随机值写在密文头部,解密时自动读出,每一份密文都能还原成同一段原文。
- 文本加密的口令忘了还能解密吗?
- 不能。本工具没有后门,也没有任何找回口令的途径,口令不会离开你的浏览器,本站同样解不开。所以加密时要输两遍口令,并建议把口令记在密码管理器里;想要既好记又足够强的口令,可以用口令短语生成器生成 5~6 个随机单词。
- AES解密失败提示口令不正确怎么办?
- 先核对口令:大小写、首尾空格、全角半角都必须一模一样。再确认密文完整——聊天软件有时会截断长消息或把链接样的内容改掉,可以让对方用「下载 .txt」发文件。标准格式用 AES-GCM 认证加密,口令错和密文被改动都会被拒绝,但两者无法区分,所以提示里两种原因都会写上。
- U2FsdGVkX1开头的AES密文怎么解密?
- U2FsdGVkX1 开头的是 CryptoJS 和 OpenSSL 的 Salted__ 格式,直接粘到「解密」框即可,页面会自动识别为兼容格式。密钥派生会依次尝试 MD5(CryptoJS 与旧版 OpenSSL 的默认)和 SHA-256(OpenSSL 1.1 以后不加 -md 参数时的默认)。用 openssl enc 的 -pbkdf2 参数生成的密文,迭代次数不写在密文里,本页无法解密。
- 文本加密和Base64、MD5有什么区别?
- Base64 只是编码,不需要任何口令,谁拿到都能还原;MD5 是哈希,只能算不能逆,本来就没有「解密」一说;文本加密是可逆的,但必须有正确的口令才能还原。所以想让别人看不懂又能让指定的人看懂,要用加密,不能用 Base64;想校验内容有没有被改,才用 MD5 或 SHA。
- 用文本加密发微信消息到底安不安全?
- 密文本身的强度取决于口令:标准格式用 PBKDF2 迭代 60 万次拖慢猜测,口令足够长时暴力猜解极不现实;口令太短(比如 6 位数字)则容易被猜中。另外口令一定要走另一个渠道告知,别和密文发在同一个聊天里。兼容格式只做了一次 MD5,强度弱,敏感内容请用标准格式。
- 手机浏览器里怎么给文字加密解密?
- 直接用手机浏览器打开本页即可,iOS Safari、安卓 Chrome 和微信内置浏览器都支持 Web Crypto,不用装 App。低端手机上派生密钥可能要一两秒,按钮会显示「正在派生密钥…」,稍等即可。需要通过 https 访问,旧版浏览器或 http 页面不提供 Web Crypto,页面会给出提示。
文本加密标准格式和兼容格式怎么选
默认用标准格式:它的密钥派生慢、有完整性校验,口令错会明确报错。只有对方用的是 CryptoJS 写的程序、或者要和 openssl enc 命令互通时,才选兼容格式;解密时不用选,页面按密文开头自动识别。
| 对比项 | 标准格式(推荐) | 兼容格式(CryptoJS / OpenSSL) |
|---|---|---|
| 密文开头 | DTE1. | U2FsdGVkX1 |
| 加密算法 | AES-256-GCM(认证加密) | AES-256-CBC |
| 密钥派生 | PBKDF2-SHA256 迭代 600,000 次 | EVP_BytesToKey,MD5 只算 1 次 |
| 完整性校验 | 有:口令错或密文被改都会报错 | 无:口令错时偶尔可能解出乱码 |
| 能否互通 | 只能用本页解密 | CryptoJS.AES、openssl enc -aes-256-cbc |
| 推荐场景 | 给人发私密文字、保存备忘 | 对接已有系统、解开 CryptoJS 密文 |
文本加密后的DTE1密文里有什么
标准格式的密文是自描述的:除了前缀,其余字节用 URL 安全的 Base64 编码,头部 37 字节整体作为 GCM 的附加认证数据,改动迭代次数、盐或 IV 的任何一位都会让解密失败,而不是悄悄用错参数。
| 字段 | 长度 | 说明 |
|---|---|---|
| 前缀 | 5 字节 | 固定为 DTE1.,用于识别格式与版本 |
| 迭代次数 | 4 字节 | 大端整数,默认 600,000 |
| 盐 | 16 字节 | 每次加密随机生成,参与密钥派生 |
| IV | 12 字节 | 每次加密随机生成的初始向量 |
| 密文 | 与明文 UTF-8 字节数相同 | AES-256-GCM 加密后的正文 |
| 认证标签 | 16 字节 | 校验口令与密文完整性 |
文本加密后密文比原文长多少
标准格式的密文长度可以直接算出来:每份密文固定多出 48 字节(迭代次数、盐、IV 和认证标签),再按 Base64 每 3 字节变 4 个字符展开,最后加上 5 个字符的前缀。
- 算例:「明天下午三点老地方见」共 10 个汉字,UTF-8 下是 30 字节;加上 48 字节固定开销共 78 字节,编码后约 109 个字符。
- 短消息加密后会明显变长,但开销是固定的:原文越长,多出来的比例越小,长文大约是原文字节数的 4/3。
- 单次最多加密 1 MB 文字。很长的密文在聊天软件里容易被折叠或截断,建议用「下载 .txt」以文件形式发送。
文本加密解密工具还有哪些叫法
这个文本加密工具也常被叫作文字加密、文字加密解密、在线文本加密、密码加密文字或口令加密:输入一段加密文字的原文,设一个口令,就得到 AES 加密后的密文;反过来粘贴密文、输入口令就是 AES 解密,也就是常说的密文解密。英文里搜 text encrypt、aes encrypt online 的,要的也是这种 AES 在线加密解密。标准格式采用 AES-256 加密(GCM 模式);遇到 U2FsdGVkX1 开头的串,同样可以在这里做 U2FsdGVkX1 解密,也就是 CryptoJS 解密。
只是想把文字转成看不懂的字符、又不需要保密,用 Base64 编码解码就够了;想校验文件或文字有没有被改动,用 MD5 在线计算或 SHA 在线计算。