У меня есть следующий код.
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?