给一份要用邮件发出去的文件加个密码,是最常见的保护动作,也是最常被随手放到陌生网站上做的那一个。一张工资单、一份对账单、一份报价:人们把明文的文件上传给第三方,请它替自己保护起来。在这里,它不会出去。
操作的方向从文件本身推断出来。您放一份没上锁的文件进来:工具建议把它锁上。您放一份上了锁的文件进来:只要您有密码,工具就建议把它打开。这跟安全专区那个保险箱是同一个思路,理由也一样:您在选文件的时候就已经选好了方向。
有一件事在这里说、别处不说:PDF 的 AES-256 有两个级别,修订 5 和修订 6,两者根本不是一回事。修订 5 只用一次计算来校验密码,这让一台机器每秒能试上亿次。修订 6 则故意把这次计算拖慢。我们内嵌的那个库只写得出修订 5。我们不藏着:在动手之前就把它显示出来,并且请您去做一句真正的口令。
怎么用
- 把您的 PDF 放进来。工具马上说明它是没上锁的还是已经上了锁的,并给出相应的动作。
- 读一读显示出来的方法:算法、修订号、密钥长度,以及加密的是什么。然后输入密码。它会一直明着显示,页面上写了为什么。
- 点一下。文件就来了,工具还会用您刚设的密码把它重新打开一次,确认真的开得了。它也会告诉您它从产出文件的字节里读到了什么。
支持的格式
只收 PDF。要给别的任何文件加密码,安全专区的“给文件加密”用的是更结实的加密,配一个刻意做慢的密钥生成:只要不是非 PDF 格式不可,那才是对的选择。
PDF 文件
明文的,用来上锁;已上锁的,用来打开。页面内容不作任何改动:原样加密,再原样交还。
它的限制
AES-256 修订 5,不是修订 6
修订 5 是 Adobe 在 2008 年发布的一个扩展:它只用一遍 SHA-256 来校验密码。离线试密码的人没有任何东西拖住他,而攻击工具的公开测量显示,它跟采用迭代散列的修订 6 之间差了四到五个数量级。修订 6 也是 PDF 2.0 标准唯一没有弃用的那个。我们内嵌的那个库只写得出 5:这是一条真实的限制,实际后果也很简单。在这里,短密码什么也保护不了:请用一句由多个词组成的口令,“生成一句口令”那件工具就是做这个的。
不是所有 PDF 阅读器都打得开修订 5
我们查过各引擎的源代码:Chrome 和 Firefox 的引擎实现了修订 5,Adobe Acrobat 从第 9 版起打得开。至于 macOS 和 iOS 的预览,以及安卓上的阅读器,我们没有找到任何第一手资料:所以我们不下断言。如果收件人非打得开不可,请先跟他试一次。
禁止打印和禁止复制什么也保护不了
PDF 允许您请求阅读器禁止打印或复制。那只是一个请求:文件一打开就已经解密了,任何阅读器都可以选择不理这个请求。所以我们不显示这些勾选框:那等于卖一把其实是贴纸的锁。真正保护得了东西的,只有打开文件的那个密码。
密码丢了就找不回来
这里没有备用钥匙,别处也没有:没有人收到您的文件,密码也不出这个标签页。密码丢了的文件就是丢了的文件。正因如此,您输入密码时它会一直明着显示。
80 MB
整个文件要在内存里打开,它加密后的版本还在旁边占着地方。这是一个普通设备上、一个标签页的老实上限。
文件上的电子签名活不下来
加密一个文件就是把它重写一遍,而一份签名封的是整个文件:之后它就校验不过了。没有哪件工具能两样兼顾。
关于这个工具的问题
我的文件和密码会被发到什么地方吗?
不会,三十秒就能验证。按 F12 打开开发者工具,切到“网络”标签页,清空列表,然后把文件放进来、输入密码、点一下。一行都不会冒出来。把网断掉再做一遍:工具表现完全一样。密码从来不离开您输入它的那个框。
你们为什么要提“修订 5”?别的网站只写 AES-256。
因为只说“AES-256”而不说修订号,恰恰把要紧的地方藏起来了。加密算法是同一个;变的是校验您密码的方式。修订 5 里那是一次 SHA-256 计算:一块显卡每秒能试上亿次。修订 6 里那次计算被刻意拖长,同样的硬件每秒只试得了几千次。两个文件都写着“AES-256”。而顶得住“有您的文件、又有时间”的人的,只有其中一个。
那这算不安全吗?
它的安全程度取决于您的密码,仅此而已。用“发票2026”,不行。用一句由六个随机词组成的口令,行,而且绰绰有余:哪怕每秒试上亿次,组合数仍然遥不可及。正因如此,工具会在动手之前把警告显示出来,并指向那件生成口令的工具。而如果不是非 PDF 格式不可,安全专区那个保险箱用的是刻意做慢的密钥生成:那更结实。
为什么你们不提供“禁止打印”或者“禁止复制”?
因为那是请求,不是锁。PDF 允许在文件里写上“不要打印”,但内容一打开就解密了,而一个不理这个请求的阅读器照样打。很多工具显示这些勾选框,是因为它们让人安心。我们不显示,是因为它们什么也保护不了,而说反话正是这个网站存在的意义所要避免的那种谎言。
收件人打得开吗?
在 Chrome 和 Firefox 里,打得开:我们查过它们 PDF 引擎的源代码,确认它们读得懂这个修订号。Adobe Acrobat 从第 9 版起打得开。至于 macOS 和 iOS 的预览,以及安卓上的阅读器,我们没有找到任何第一手资料,所以不下断言。如果能不能打开是关键,请在发真文件之前先跟收件人试一次。
我把一份旧 PDF 的密码弄丢了。你们能打开吗?
不能,而且没有人能老老实实地做到。这件工具是在您提供密码的前提下打开一份上了锁的文件:它不去猜。那些许诺能“解锁”没有密码的 PDF 的服务,通常利用的是很多 PDF 其实并没有真正加密、只是被标了“不要打印”这一点,而且要您把文件上传给它们。在这里,没有密码就是没办法。
上了锁的文件会在什么地方留着我的名字吗?
只要您让那个勾保持打上,就不会:工具会在加密之前去掉文件的身份信息和它的 XML 块。这个细节有一个确切的技术理由:视加密文件的保存方式而定,这些文字可能以明文形式留在受保护的文件里。我们量过这件事,我们只用那种不会泄露的方式来保存,而且验收关卡会在每一个产出文件里搜这些明文值。