如何使用所有者密码而不使用用户密码解密PDF?
时间:2020-03-05 18:49:16 来源:igfitidea点击:
尽管Adobe可以提供PDF规范,但它并不是最简单的文档。 PDF允许对文档进行加密,因此需要用户密码和/或者所有者密码才能对文档执行各种操作(显示,打印等)。常见的用途是锁定PDF,以便最终用户无需输入任何密码即可阅读它,但是执行其他任何操作都需要输入密码。
我正在尝试解析以这种方式锁定的PDF(以获得与在任何阅读器中打开它们相同的特权)。使用空字符串作为用户密码是行不通的,但是(规范的3.5.2节)似乎必须要有用户密码才能创建admin密码的哈希。
我想要的是对如何执行此操作的解释,或者是我可以阅读的任何代码(理想情况下为Python,C或者C ++,但任何可读的代码都可以这样做),以便能够理解我的意思。在做。最好是独立代码,而不是通读(例如)gsview源代码。
解决方案
回答
GSview的插件可用于查看加密的PDF。
如果这对我们有用,则我们可以查看源。
回答
如果我没记错的话,有32(?)字节的固定填充字符串可应用于任何密码。在计算加密密钥开始时,通过截断或者添加一些填充字节,所有密码都必须为32个字节。
如果未设置用户密码,则只需填充字符串的所有32个字节,即使用32个填充字节作为计算加密密钥的起点。
我必须承认,自从这样做以来已经有一段时间了,我确实记得PDF的加密部分绝对是一团糟,因为在几乎每个修订版中它都发生了重大变化,需要我们处理很多情况所有PDF。
祝你好运。
回答
对于此类问题,xpdf可能是一个很好的参考实现。我以前已经成功地使用它们来打开加密的pdf。