gpt4 book ai didi

java - 如何使用 Java 加密 PDF?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:56 25 4
gpt4 key购买 nike

我一直在尝试使用 Java 加密 PDF。到目前为止,我可以成功加密其他文件类型(.txt、.png 等)。当我使用 PDF 进行解密时,它会破坏 in 中的信息。

这是我用来加密它的:

public byte[] cryptograph(Key key, byte[] content){
Cipher cipher;
byte[] cryptograph = null;
try {
cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
cryptograph = cipher.doFinal(content);
} catch (Exception e) {
e.printStackTrace();
}
return cryptograph;

}

解密它:

public byte[] decrypt(Key key,byte[] textCryp){
Cipher cipher;
byte[] decrypted = null;
try {
cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
decrypted = cipher.doFinal(textCryp);
} catch (Exception e) {
e.printStackTrace();
}

return decrypted;
}

更新:

这是我用来读取文件的:

public byte[] getFile(){
byte[] content = null;
try {
InputStream is = new FileInputStream("test.pdf");
BufferedInputStream vf = new BufferedInputStream(is);
content = new byte[vf.available()];
vf.read(content);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return content;
}

用它来重写文件

public static void saveDecrypt(byte[] bytes) throws IOException{
Document doc=new Document();
try {
PdfWriter.getInstance(doc,new FileOutputStream("fileDecrypted.pdf"));
doc.open();
doc.add(new Paragraph(new String(bytes)));
doc.close();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

最佳答案

您的 saveDecrypt 方法似乎将 iText 用作 PDF 库。你不需要这样做,事实上你不应该这样做!您在阅读时将 PDF 文件简单地视为一系列字节,因此在编写时您应该做完全相同的事情。

只需获取您解密的字节并使用 FileOutputStream 将它们写入文件!

关于java - 如何使用 Java 加密 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13271184/

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