微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PDFBox +充气城堡-签名PDF

如何解决PDFBox +充气城堡-签名PDF

|| 我正在尝试使用PdfBox(和BouncyCastle)对PDF进行数字签名(加密?) 我已经创建了密钥库和证书:
%java_home%\\bin\\keytool -genkey -alias razor -keypass testkeypass -storepass teststorepass  -keystore test-keystore.jks -validity 360 -dname \"CN=razor,OU=myorg,O=my.org,L=Mycity,C=PL\"
%java_home%\\bin\\keytool -export -alias razor -keypass testkeypass -storepass teststorepass  -keystore test-keystore.jks -file test-cert.cer  
现在我正在尝试使用PdfBox
org.apache.pdfBox.PDFBox Encrypt -certFile test-cert.cer -canModify false -canPrint false test.pdf test-signed-out.pdf
而且我有
Encrypt Failed with the following exception:
org.apache.pdfBox.exceptions.COSVisitorException: Cannot find any provider supporting 1.2.840.10040.4.1
    at org.apache.pdfBox.pdfwriter.COSWriter.write(COSWriter.java:1025)
    at org.apache.pdfBox.pdmodel.PDDocument.save(PDDocument.java:914)
    at org.apache.pdfBox.pdmodel.PDDocument.save(PDDocument.java:895)
    at org.apache.pdfBox.Encrypt.encrypt(Encrypt.java:189)
    at org.apache.pdfBox.Encrypt.main(Encrypt.java:53)
    at org.apache.pdfBox.PDFBox.main(PDFBox.java:40)
org.apache.pdfBox.exceptions.CryptographyException: Cannot find any provider supporting 1.2.840.10040.4.1
    at org.apache.pdfBox.pdmodel.encryption.PublicKeySecurityHandler.prepareDocumentForEncryption(PublicKeySecurityHandler.java:344)
    at org.apache.pdfBox.pdfwriter.COSWriter.write(COSWriter.java:1016)
有什么问题 ?我做错了什么? 我可以在已经签名(通过iText)的PDF上使用PDFBox ShowCertificate: 签名算法:SHA1withDSA,OID = 1.2.840.10040.4.3     

解决方法

        我对PDFBox不熟悉,但是我认为您的问题是\“ Encrypt \”命令行工具无法进行签名。您似乎已经创建了DSA证书/密钥。 DSA用于数字签名。该例外反映了以下事实:DSA不是有效的加密算法。 我看到了一些使用PDFBox签名的参考,但是我不认为这是这样做的。     ,        您将需要添加提供商。 您可以使用单行代码执行此操作。 Security.addProvider(new BouncyCastleProvider()); 安全性-来自java.security.Security 显然,您将需要先导入BouncyCastleProviderStuff。 糟糕-我刚刚注意到您正在使用某些PDFBox工具从命令行进行此操作。 不确定如何在此处添加提供程序。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。