gpt4 book ai didi

java - PDF 加密/解密不起作用

转载 作者:行者123 更新时间:2023-12-01 09:44:11 25 4
gpt4 key购买 nike

当我尝试使用 bouncycaSTLe 加密/解密 pdf 文件时,这给了我一个空的 pdf(大小为 184Ko)。该代码与文本文件完美配合。但是PDF文件不行。有人知道如何用 Java 加密/解密 PDF 文件吗?

下面是我用于加密的代码,当我在这一行加密 PDF 文件时遇到异常(java.lang.ArrayIndexOutOfBoundsException:RSA block 的数据太多): cipherText = cipher.doFinal(input) :

     Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

byte[] input = acVote;
byte[] cipherText = null;

Cipher cipher = null;

try {
cipher = Cipher.getInstance("RSA/ECB/OAEPPadding", "BC");

SecureRandom random = new SecureRandom();

//do encryption

cipher.init(Cipher.ENCRYPT_MODE, pubKey, random);

cipherText = cipher.doFinal(input);
} catch (Exception ex) {
log.error("Exeption Message : " + ex);
}

当我加密 .txt 文件时,它可以工作......

最佳答案

您需要做出以下决定:我想要加密文件还是加密 PDF?区别很重要。如果您想要加密文件,那就由您决定。您遇到问题的可能原因可能包括 PDF 通常是部分二进制文件,尽管这对充气城堡不会产生影响,但它可能会告诉您用于数据读取的阅读器类型。

如果您想获取加密的 PDF(我怀疑这就是您真正想要的),充气城堡不会(直接)为您做到这一点。

相反,您需要使用 iText(一种基于 iText 的工具)或其他类似的库(例如 JoltPdf),它可以使用 PDF 并正确写出加密的 PDF。加密 PDF 是仅部分加密的 PDF 文件。字符串和流类型的 PDF 元素将使用提供的密码、指定的加密算法和一些盐进行加密。此外,根据加密算法,文档可能会被签名,这是它自己的事情,不遵循大多数典型的签名过程。

在底层,iText 和 JoltPdf 使用充气城堡进行哈希、加密和签名。

关于java - PDF 加密/解密不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com