口令会经 PBKDF2-SHA256 派生成 256 位密钥。口令强度直接决定安全性,短口令再多迭代也扛不住字典攻击。
16 字节 = AES-128,24 字节 = AES-192,32 字节 = AES-256。填 Hex 或 Base64 都会自动识别。
迭代次数越高,暴力破解成本越高,但每次加解密都要多花一点时间。
同样是对称加密,差别主要在「有没有认证」。
| 算法 | 是否认证 | 特点 | 建议 |
|---|---|---|---|
| AES-GCM | ✅ 有 | 同时加密和认证,能发现密文被篡改,速度快 | 首选,本工具用的就是它 |
| AES-CBC + HMAC | ✅ 有(需自己拼) | 先加密再算 MAC,正确实现较繁琐 | 老系统兼容时才用 |
| AES-CBC(裸) | ❌ 无 | 密文被改也发现不了,有填充预言攻击风险 | 不要用 |
| ChaCha20-Poly1305 | ✅ 有 | 无 AES 硬件加速时更快,移动端友好 | 好选择,Web Crypto 尚未内置 |
| AES-ECB | ❌ 无 | 相同明文块出相同密文块,会泄漏图案 | 绝对不要用来加密数据 |
⚠️ 使用提示:① 这是文本级加解密工具,不适合直接处理超大文件(浏览器内存有限);② GCM 的 IV 绝不能重复——本工具每次加密都用密码学安全的随机数自动生成 IV 并写进封装串,你不需要手动管;③ 用口令模式时,口令强度就是你的安全上限,建议 12 位以上且不使用常见词;④ 务必先拿一段无关紧要的文字试一次,确认能正常解密,再去加密真正重要的内容;⑤ 口令、密钥无法找回——本工具不保存任何东西,丢了就是丢了;⑥ 涉及生产系统、合规要求或高价值数据,请使用成熟的加密库并接受安全审计。
想把一段文字发给别人又怕被看到?想临时存个密钥、备注、账号,又不想明文放着?
这个工具做的是一次干净的对称加密:
① 用的是浏览器原生的 Web Crypto,不是网上抄来的一段 JavaScript 加密代码——算法实现由浏览器厂商维护,可信度完全不同;
② AES-GCM:既加密又认证,密文被改一个字节就解不出来,不会「解出一堆乱码还以为成功了」;
③ 两种密钥来源:记口令就用口令(PBKDF2-SHA256 派生),有固定密钥就直接填原始密钥;
④ IV 和 Salt 全自动:每次加密都用密码学安全随机数重新生成,并写进结果串里,你不需要管,也杜绝了「IV 复用」这个最常见的致命错误;
⑤ 结果是一个自解析封装串:解密时自动读出迭代次数、salt、IV,不用你手动填参数。
全程在你自己的浏览器里完成,明文、口令、密钥都不会离开这台设备,页面上也没有任何网络请求。
怎么实现:
① 密钥派生:`crypto.subtle.importKey('raw', 口令)` → `deriveBits` 走 PBKDF2-SHA256,16 字节随机 salt,迭代次数可选(默认 31 万);
② 原始密钥模式:把你填的 Hex / Base64 解成字节,按长度自动判定 AES-128 / 192 / 256;
③ 加密:`crypto.subtle.encrypt({ name: 'AES-GCM', iv: 随机 12 字节, tagLength: 128 }, key, 明文)`。GCM 的认证标签(16 字节)由浏览器自动追加在密文尾部;
④ 封装格式:口令模式输出 `AG1$P$<迭代>$<salt>$<iv>$<密文>`,原始密钥模式输出 `AG1$K$<iv>$<密文>`,解密时自动识别拆分,你不用手动抄参数;
⑤ 随机数:salt 与 IV 都用 `crypto.getRandomValues()`,来自系统 CSPRNG,不是 `Math.random()`;
⑥ 解密失败:GCM 认证不通过时 `decrypt` 会直接抛异常(密钥错、密文被改都是这个结果),本工具会明确提示「密钥不对或密文被篡改」,不会返回乱码。
它不做:不做文件级加密、不做密钥托管与找回、不做非 GCM 模式(因为那些模式不安全)。
crypto.subtle)实现 AES-GCM 加解密,支持口令派生(PBKDF2-SHA256,10 万~100 万次可选)与原始密钥(16/24/32 字节自动识别)两种模式;salt 与 IV 均由 getRandomValues() 生成并写入自解析封装串 AG1$P… / AG1$K…,解密自动拆分参数;输出支持 Base64 / Hex,附算法、IV、Salt、派生耗时与加解密耗时明细。非安全上下文(非 HTTPS / 非 localhost)给出明确引导。纯本地零依赖,适配黑夜模式。
审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!