com.itextpdf.text.exceptions.InvalidPdfException:使用pkcss11 usb令牌解密使用adobe dc pro加密的pdf时,密钥无效

时间:2017-04-25 12:57:57

标签: java pdf encryption itext bouncycastle

我正在使用iTextpdf使用pkcss11 usb令牌证书加密/解密PDF。

以下是我的加密和解密方法

public void encryptPdf(String src, String dest)
        throws IOException, DocumentException, CertificateException {
        PdfReader reader = new PdfReader(src);
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
        Certificate cert = getPublicCertificate("C:\\Users\\USER\\Documents\\NetBeansProjects\\test\\src\\lk_enc.cer");
        stamper.setEncryption(new Certificate[]{cert},
            new int[]{PdfWriter.ALLOW_PRINTING}, PdfWriter.ENCRYPTION_AES_128);
        stamper.close();
        reader.close();
    }

public void decryptPdf(String src, String dest)
        throws IOException, DocumentException, GeneralSecurityException,CMSException {
        try{
//        decrypt(getPrivateKey(), DESTINATION_FILE, DECRYPTED_FILE);
            PrivateKey pkc = getPrivateKey();
        PdfReader reader = new PdfReader(src,
            getPublicCertificate("C:\\Users\\USER\\Documents\\NetBeansProjects\\test\\src\\lk_enc.cer"), pkc, "SunPKCS11-eToken");
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
        stamper.close();
        reader.close();
        }catch(Exception ex){
            System.out.println(ex);
        }
    }

我使用的是itextpdf 5.2.1和bc 1.46版本。使用encryptPdf()方法加密的pdf解密工作正常。

但是decryptPdf()mehtod失败并出错 com.itextpdf.text.exceptions.InvalidPdfException:消息中的密钥无效  当使用以Adobe dc pro(128 AES)加密的pdf作为源文件时。

来源PDF

1.PDF encrypted with encryptPdf() method

2.PDF encrypted with adobe dc pro with AES 128bit

提前致谢

0 个答案:

没有答案