如何使用所有者密码解密PDF,但没有用户密码?

时间:2008-09-08 10:55:13

标签: c++ python pdf passwords encryption

尽管Adobe可以使用PDF specification,但这并不是最简单的文档。 PDF允许对文档进行加密,因此需要用户密码和/或所有者密码才能对文档进行各种操作(显示,打印等)。一个常见的用途是锁定PDF,以便最终用户可以在不输入任何密码的情况下读取它,但需要密码才能执行任何其他操作。

我正在尝试解析以这种方式锁定的PDF(获得与在任何阅读器中打开它们相同的权限)。使用空字符串作为用户密码不起作用,但似乎(规范的第3.5.2节)必须有用户密码才能为管理员密码创建哈希。

我想要的是对如何执行此操作的解释,或者我可以阅读的任何代码(理想情况下是Python,C或C ++,但任何可读的都可以),这样做以便我能理解我的意思我打算这样做。单独的代码,而不是通过(例如)gsview源读取,将是最好的。

3 个答案:

答案 0 :(得分:1)

用于查看加密PDF的GSview插件是here

如果这对您有用,您可以查看来源。

答案 1 :(得分:1)

如果我没记错的话,有一个32(?)字节的固定填充字符串可以应用于任何密码。在计算加密密钥开始时,所有密码都需要是32个字节,方法是截断或添加一些填充字节。

如果没有设置用户密码,则只需填充字符串的所有32个字节,即使用32个填充字节作为计算加密密钥的起始点。

我必须承认,自从我完成这项工作已经有一段时间了,我确实记得PDF的加密部分是绝对混乱的,因为它几乎在每次修订中都发生了重大变化,需要你应付很多处理所有PDF的案例。

祝你好运。

答案 2 :(得分:0)

对于这类问题,xpdf可能是一个很好的参考实现。我之前已成功使用它们打开加密的pdf文件。