文件加密解密
File Encrypt & Decrypt
用一个口令以 AES-256-GCM 加密任意文件,也能把它自己加密出来的文件解回去。
通过邮件或聊天软件发文件,就是把它以可读的形式放到别人的磁盘上。先用一个通过另一条渠道分享的密码短语加密,传输中的副本和存着的副本没有你就都毫无意义。这里用 AES-256-GCM 完全在标签页内完成这件事。
文件在这个标签页里,用浏览器自带的加密功能加密。文件和口令都不上传,关于这两者的任何东西也都不保存——包括本页在内。
把要加密的文件拖进来
任何文件都行,只要大小还装得进你浏览器的内存。
到底对这个文件做了什么
- 密码算法
- AES-256-GCM,128位标签
- 密钥
- 256位,每个文件单独派生
- 密钥派生
- PBKDF2 with HMAC-SHA-256,600,000次迭代
- 盐
- 16个随机字节,每个文件都换新的
- 随机数
- 12个随机字节,每次加密都换新的
结果是一个 38 字节的头——标记、参数、盐和随机数——后面跟着密文。头和内容一起被认证,所以在传输途中改掉迭代次数,只会让解密失败,而不会悄悄削弱它。文件名不会存在里面任何地方。
用 PBKDF2 而不是 Argon2id,是因为它是浏览器自己提供的,可以信得过;Argon2id 抗 GPU 更好,但那意味着要捎带一份本项目无法验证的 WebAssembly 构建。这笔取舍写在这里,不藏着。
口令丢了,文件也就没了。没有找回,没有提示,没有后门——不是因为做起来难,而是因为后门正是这东西要防的。
怎么用
拖入文件并设置密码短语
密码短语用 PBKDF2 和一个新生成的随机盐拉伸成密钥,所以同一个文件用同一个密码短语加密两次,得到的字节也不同。
把密码短语分开发送
密码短语和文件放在同一封邮件里,什么都保护不了。换一条渠道,或者用阅后即焚密语工具。
在另一端解密
同一个页面能解开它自己产出的文件。GCM 在解密的同时做认证,所以传输中被改过的文件会直接失败,而不是解出一堆损坏的内容。
常见问题
忘了密码短语会怎样?
文件就没了。没有恢复密钥,没有重置,没有后门——正是这一点让它值得用。加密任何你丢不起的东西之前,先把密码短语记在某个地方。
别人不用这个页面能打开它吗?
容器是这个工具自己的格式——一个装着盐、IV 和参数的小头部,后面跟着 GCM 密文。页面上有文档,重新实现也很简单,但它不是 zip,也不是 OpenPGP 文件,所以接收方需要这个页面或者这份规范。
有文件大小限制吗?
限制是你浏览器的内存,因为文件是放在标签页里处理的,不是流式传到服务器。很大的文件在桌面上能成功,在手机上可能失败。
它会隐藏文件名和大小吗?
文件名存在加密容器内部,所以是隐藏的。大小不隐藏——密文长度随明文长度变化,这类工具无一例外。
可以从这些接进来
PDF 加密码
PDF Password Protect
给 PDF 设打开密码和权限密码——默认 AES-256,旧阅读器可选 AES-128 和 RC4——并设定打印、复制、编辑、批注权限,无需上传,全部在浏览器内完成。
文本加密解密
Text Encrypt & Decrypt
用一个口令做 AES-GCM 加密,产出一段自带全部参数的 Base64 密文。
阅后即焚密语
Self-Destructing Note
在浏览器里把一段内容加密,生成一条一次性链接,别人读过之后内容就销毁。
PGP 消息加密
PGP Message Tool
用一个口令在浏览器里完成 OpenPGP 消息的加解密——RFC 4880 对称模式(AES-256、SHA-256 S2K、MDC),和 gpg -c 互通;公钥加密和签名还没做。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
文件校验和
File Checksum
不限大小地流式哈希文件,并和你粘贴进来的期望值当场比对。
PDF 加密码
PDF Password Protect
给 PDF 设打开密码和权限密码——默认 AES-256,旧阅读器可选 AES-128 和 RC4——并设定打印、复制、编辑、批注权限,无需上传,全部在浏览器内完成。
阅后即焚密语
Self-Destructing Note
在浏览器里把一段内容加密,生成一条一次性链接,别人读过之后内容就销毁。
文本加密解密
Text Encrypt & Decrypt
用一个口令做 AES-GCM 加密,产出一段自带全部参数的 Base64 密文。
压缩包结构检查
Archive Inspector
不解压就打开 zip,标出路径穿越条目、可执行文件、宏文档和压缩炸弹。
音频格式转换
Audio Converter
在 MP3、WAV、FLAC、AAC、OGG、Opus 之间转换,比特率和采样率可设。