跳到正文

文件加密解密

File Encrypt & Decrypt

用一个口令以 AES-256-GCM 加密任意文件,也能把它自己加密出来的文件解回去。

通过邮件或聊天软件发文件,就是把它以可读的形式放到别人的磁盘上。先用一个通过另一条渠道分享的密码短语加密,传输中的副本和存着的副本没有你就都毫无意义。这里用 AES-256-GCM 完全在标签页内完成这件事。

🔒 完全在你的浏览器里运行encryptaesfileprivacy

文件在这个标签页里,用浏览器自带的加密功能加密。文件和口令都不上传,关于这两者的任何东西也都不保存——包括本页在内。

把要加密的文件拖进来

任何文件都行,只要大小还装得进你浏览器的内存。

到底对这个文件做了什么

密码算法
AES-256-GCM,128位标签
密钥
256位,每个文件单独派生
密钥派生
PBKDF2 with HMAC-SHA-256,600,000次迭代
盐
16个随机字节,每个文件都换新的
随机数
12个随机字节,每次加密都换新的

结果是一个 38 字节的头——标记、参数、盐和随机数——后面跟着密文。头和内容一起被认证,所以在传输途中改掉迭代次数,只会让解密失败,而不会悄悄削弱它。文件名不会存在里面任何地方。

用 PBKDF2 而不是 Argon2id,是因为它是浏览器自己提供的,可以信得过;Argon2id 抗 GPU 更好,但那意味着要捎带一份本项目无法验证的 WebAssembly 构建。这笔取舍写在这里,不藏着。

口令丢了,文件也就没了。没有找回,没有提示,没有后门——不是因为做起来难,而是因为后门正是这东西要防的。

怎么用

  1. 拖入文件并设置密码短语

    密码短语用 PBKDF2 和一个新生成的随机盐拉伸成密钥,所以同一个文件用同一个密码短语加密两次,得到的字节也不同。

  2. 把密码短语分开发送

    密码短语和文件放在同一封邮件里,什么都保护不了。换一条渠道,或者用阅后即焚密语工具。

  3. 在另一端解密

    同一个页面能解开它自己产出的文件。GCM 在解密的同时做认证,所以传输中被改过的文件会直接失败,而不是解出一堆损坏的内容。

常见问题

忘了密码短语会怎样?

文件就没了。没有恢复密钥,没有重置,没有后门——正是这一点让它值得用。加密任何你丢不起的东西之前,先把密码短语记在某个地方。

别人不用这个页面能打开它吗?

容器是这个工具自己的格式——一个装着盐、IV 和参数的小头部,后面跟着 GCM 密文。页面上有文档,重新实现也很简单,但它不是 zip,也不是 OpenPGP 文件,所以接收方需要这个页面或者这份规范。

有文件大小限制吗?

限制是你浏览器的内存,因为文件是放在标签页里处理的,不是流式传到服务器。很大的文件在桌面上能成功,在手机上可能失败。

它会隐藏文件名和大小吗?

文件名存在加密容器内部,所以是隐藏的。大小不隐藏——密文长度随明文长度变化,这类工具无一例外。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。