java - Java Apache 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 库中是否存在错误?
解决方案
推荐阅读
- reactjs - 如何通过按钮单击事件在选择下拉列表中添加项目
- codeigniter - 有没有办法将文本框和复选框的数组从视图发送到控制器(CodeIgniter)
- jquery - 如果 {{ value[#] }} 为空,则隐藏模态按钮
- game-development - 在 Godot 引擎中添加精灵时无法获取选项
- php - 实时服务器上的 IIS / PHPMailer 身份验证问题,但在本地主机上工作
- javascript - 如何使用 Bootstrap 以表格格式显示嵌套 json 的所有字段
- javascript - 如何在 React Redux 应用程序中映射图像数组?
- javascript - 为什么我的 JS 代码中的 clearForm() 不起作用?
- netlogo - Netlogo:请特定的乌龟做某事
- python - Regionprops 总是找到一个区域 - python