当前位置: 首页 > 知识库问答 >
问题:

如何阅读使用未知的随机所有者密码创建的PDF?

楚苏燕
2023-03-14

要求是一次处理一批PDF,成功后用用户密码加密每个PDF。

然而,这些PDF的加密之前随机生成的动态所有者密码(不知道任何人),以防止任何编辑。

我使用iText加密,如下所示:

byte[] userPass = "user".getBytes();
byte[] ownerPass = "owner".getBytes();
PdfReader reader = new PdfReader("Misc.pdf");

PdfStamper stamper = new PdfStamper(reader,
            new FileOutputStream("Processed_Encrypted.pdf"));
stamper.setEncryption(userPass, ownerPass,
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128
        | PdfWriter.DO_NOT_ENCRYPT_METADATA);
stamper.close();
reader.close();

但此代码抛出com.itextpdf.text.exceptions.BadPasswordException:PdfReader未使用所有者密码打开

是否有一个关于如何解决这个错误/绕过所有者密码的指导?

在这里我想说明的是,我们合法拥有这些PDF,所以没有犯罪/黑客行为。

共有1个答案

司雅畅
2023-03-14

PDFReader有一个未记录的静态布尔变量,名为UnethicalReading。由于明显的原因,该变量默认设置为false。您可以将该变量设置为true,如下所示:

PdfReader.unethicalreading = true;

从现在起,PdfReader将忽略所有者密码的存在。它只会在用户密码到位的情况下抛出异常。

用这个你自己承担风险。

 类似资料:
  • 删除此代码时出现以下异常: 但是,我被迫使用iText 2.1.7或更高版本(iText),而不是iText 5.0.0或更高版本(iText)。在旧版本的库中不存在。

  • 问题内容: 我正在运行一个网站,并且有一个计分系统,可为您提供玩游戏次数的积分。 它使用散列来证明http请求评分的完整性,因此用户无法更改任何内容,但是正如我担心的那样,有人发现他们不需要更改它,他们只需要获得高分并复制http请求,标头和所有。 以前,我被禁止防御此攻击,因为它被认为不太可能。但是,既然已经发生,我可以。http请求源自Flash游戏,然后由php验证,然后php将其输入数据库

  • 我需要创建一个简单的通知,这将显示在通知栏随着声音和图标,如果可能的话?我也需要它与Android 2.2兼容,所以我发现NotificationCompat.Builder适用于4以上的所有API。如果有更好的解决方案,请随时提及。

  • 我需要能够删除安全/加密从一些PDF文档,最好与itextsharp库。这在过去是可能的(如何通过使用C#提供文件的密码作为参数来解密pdf文件?),但最近对库的更改意味着该解决方案不再起作用。

  • 问题内容: 我知道如果我使用, 给了我我想要的东西,但是带有正态分布的元素。但是,如果我只想要随机整数怎么办? 通过提供范围来工作,但不像提供数组那样工作。那么我该如何使用某个范围之间的随机整数呢? 问题答案: 接受第三个参数(),您可以在其中指定输出数组的大小。您可以使用它来创建- Here-创建一个大小为size的输出数组,其中的随机整数元素在之间。 演示- 产生:

  • 我正在使用和开发一个web应用程序。我正在使用Active Directory作为用户联邦来检索所有用户信息。 但是要在我的web应用程序中使用这些信息,我认为我必须将它们保存在“local-webapp”数据库中。 那么在用户被记录之后,我如何将他们保存在我的数据库中呢? 客户: 错误是: 我哪里做错了? 编辑6 这是启用日志记录后的日志表单密钥斗篷: