Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带证书的pdf的iText加密导致bouncycastle错误_Java_Pdf_Encryption_Certificate_Itext - Fatal编程技术网

Java 带证书的pdf的iText加密导致bouncycastle错误

Java 带证书的pdf的iText加密导致bouncycastle错误,java,pdf,encryption,certificate,itext,Java,Pdf,Encryption,Certificate,Itext,当我尝试使用此代码用证书加密pdf时,出现以下错误: public static void encryptPdf(String src, String dest, String certFile) throws IOException, DocumentException, CertificateException { PdfReader reader = null; PdfStamper stamper = null; try {

当我尝试使用此代码用证书加密pdf时,出现以下错误:

public static void encryptPdf(String src, String dest, String certFile)
    throws IOException, DocumentException, CertificateException
{       
    PdfReader reader = null;
    PdfStamper stamper = null;
    try {
        reader = new PdfReader(src);
        stamper = new PdfStamper(reader, new FileOutputStream(dest));
        Certificate cert = Utils.getCertificate(certFile);        
        stamper.setEncryption(new Certificate[]{cert}, new int[]{PdfWriter.ALLOW_PRINTING}, PdfWriter.ENCRYPTION_AES_128);

    } finally {
        stamper.close();
        reader.close();             
    }
}
这基本上是从官方示例中复制的:

我得到以下错误:

java.lang.IllegalArgumentException: Key length not 128/192/256 bits.
使用此stacktrace:

java.lang.IllegalArgumentException: Key length not 128/192/256 bits.
        at org.bouncycastle.crypto.engines.AESFastEngine.generateWorkingKey(Unknown Source)
        at org.bouncycastle.crypto.engines.AESFastEngine.init(Unknown Source)
        at org.bouncycastle.crypto.modes.CBCBlockCipher.init(Unknown Source)
        at org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.init(Unknown Source)
        at com.itextpdf.text.pdf.crypto.AESCipher.<init>(AESCipher.java:68)
        at com.itextpdf.text.pdf.OutputStreamEncryption.<init>(OutputStreamEncryption.java:73)
        at com.itextpdf.text.pdf.PdfEncryption.getEncryptionStream(PdfEncryption.java:743)
        at com.itextpdf.text.pdf.PdfEncryption.encryptByteArray(PdfEncryption.java:756)
        at com.itextpdf.text.pdf.PdfString.toPdf(PdfString.java:148)
        at com.itextpdf.text.pdf.PdfDictionary.toPdf(PdfDictionary.java:149)
        at com.itextpdf.text.pdf.PdfIndirectObject.writeTo(PdfIndirectObject.java:158)
        at com.itextpdf.text.pdf.PdfWriter$PdfBody.write(PdfWriter.java:420)
        at com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:398)
        at com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:334)
        at com.itextpdf.text.pdf.PdfWriter.addToBody(PdfWriter.java:829)
        at com.itextpdf.text.pdf.PdfStamperImp.close(PdfStamperImp.java:316)
        at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:208)
        at de.naev.signpdf.PdfSigner.encryptPdf(PdfSigner.java:117)
        at de.naev.signpdf.Main.encrypt(Main.java:94)
        at de.naev.signpdf.Main.main(Main.java:183)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
java.lang.IllegalArgumentException:密钥长度不是128/192/256位。
在org.bouncycastle.crypto.engines.AESFastEngine.generateWorkingKey(未知来源)上
位于org.bouncycastle.crypto.engines.AESFastEngine.init(未知来源)
位于org.bouncycastle.crypto.modes.CBCBlockCipher.init(未知源)
位于org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.init(未知来源)
请访问com.itextpdf.text.pdf.crypto.aesciper.(aesciper.java:68)
在com.itextpdf.text.pdf.OutputStreamEncryption.(OutputStreamEncryption.java:73)
请访问com.itextpdf.text.pdf.PdfEncryption.getEncryptionStream(PdfEncryption.java:743)
位于com.itextpdf.text.pdf.PdfEncryption.encryptByteArray(PdfEncryption.java:756)
请访问com.itextpdf.text.pdf.PdfString.toPdf(PdfString.java:148)
请访问com.itextpdf.text.pdf.PdfDictionary.toPdf(PdfDictionary.java:149)
位于com.itextpdf.text.pdf.PdfIndirectObject.writeTo(PdfIndirectObject.java:158)
请访问com.itextpdf.text.pdf.PdfWriter$PdfBody.write(PdfWriter.java:420)
请访问com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:398)
请访问com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:334)
请访问com.itextpdf.text.pdf.PdfWriter.addToBody(PdfWriter.java:829)
位于com.itextpdf.text.pdf.PdfStamperImp.close(PdfStamperImp.java:316)
请访问com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:208)
位于de.naev.signpdf.PdfSigner.encryptPdf(PdfSigner.java:117)
位于de.naev.signpdf.Main.encrypt(Main.java:94)
位于de.naev.signpdf.Main.Main(Main.java:183)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
我使用了:
itextpdf-5.5.3.jar、bcprov-jdk15on-151.jar、bcpkix-jdk15on-151.jar

我忘了添加和使用

做了那件事之后,一切都如期进行