Java Apache PDFBox - Шифрование не является детерминированным - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть следующий код.

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?

...