【问题标题】:How does one decrypt a PDF with an owner password, but no user password?如何使用所有者密码但没有用户密码来解密 PDF?
【发布时间】:2010-09-08 03:30:28
【问题描述】:

虽然 PDF specification 可从 Adob​​e 获得,但它并不是最容易阅读的文档。 PDF 允许对文档进行加密,因此需要用户密码和/或所有者密码才能对文档进行各种操作(显示、打印等)。一个常见的用途是锁定 PDF,以便最终用户可以在不输入任何密码的情况下阅读它,但其他任何操作都需要密码。

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

我想要的是如何做到这一点的解释,或者我可以阅读的任何代码(理想情况下是 Python、C 或 C++,但任何可读的都可以)这样我就可以理解我的意思了我的意思是在做。最好使用独立代码,而不是通读(例如)gsview 源代码。

【问题讨论】:

  • 另外,只是在查看器中打开它,当我创建这样的 PDF 时,它会受到限制,但我似乎无法输入我的所有者密码来删除限制。好像没用。

标签: c++ python pdf passwords encryption


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    我不得不承认我已经有一段时间没有这样做了,我确实记得 PDF 的加密部分绝对是一团糟,因为它几乎在每个修订版中都发生了重大变化,需要您处理很多处理所有 PDF 的案例。

    祝你好运。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        • 1970-01-01
        • 2020-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多