Java Apache PDFBox - 加密不确定

时间:2018-04-26 09:03:42

标签: java apache pdf pdfbox

我有以下代码。

public byte[] encryptPdf(byte[] pdf, String password) throws IOException {
   ByteArrayOutputStream baos;
   try (PDDocument pdDocument = PDDocument.load(pdf)) {
      AccessPermission accessPermission = new AccessPermission();
      StandardProtectionPolicy protectionPolicy = new 
      StandardProtectionPolicy(null, password, accessPermission);
      protectionPolicy.setEncryptionKeyLength(128);
      protectionPolicy.setPermissions(accessPermission);
      pdDocument.protect(protectionPolicy);
      baos = new ByteArrayOutputStream();
      pdDocument.save(baos);
   }
   return baos.toByteArray();
}

@Test
public void shouldEncryptedPDFEquals() {
   byte[] pdf = IOUtils.toByteArray(getClass().getClassLoader().getResourceAsStream("sample.pdf"));

   byte[] firstEncryption = encryptPdf(pdf, "token");
   byte[] secondEncryption = encryptPdf(pdf, "token");

   assertThat(firstEncryption.length, is(secondEncryption.length));
}

在测试中,我会检查加密文件是否等于。

问题是,生成字节数组不是确定性的。

如果我多次调用该方法,则数组长度不会等于。断言失败了。但不适用于所有类型的pdf文件。

Apache PDFBox库中是否有错误?

0 个答案:

没有答案