java - PDFBox+充气城堡-签名PDF

标签 java pdf bouncycastle sign pdfbox

我正在尝试使用 PdfBox(和 BouncyCaSTLe)对 PDF 进行数字签名(加密?)

我已经创建了 keystore 和证书:

%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,但我认为您的问题是“加密”命令行工具不进行签名。您似乎已经创建了 DSA 证书/ key 。 DSA 用于数字签名。该异常反射(reflect)了 DSA 不是有效的加密算法这一事实。

我看到一些关于使用 PDFBox 签名的引用资料,但我认为不是这种方式。

关于java - PDFBox+充气城堡-签名PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197852/

相关文章:

php - 像 Verisign/Docusign 一样非常非常快地将 PDF 转换为 PNG

java - 如何使用文件系统中的 .cer 文件验证 TimeStampToken?

c# - Java BouncyCaSTLe AES 解密的 C# 等价物是什么?

java - JSCEP-第三个参数类型错误。发现 : 'org.spongycaSTLe.pkcs.PKCS10CertificationRequest' , 需要: 'org.bouncycaSTLe.pkcs.PKCS10CertificationRequest'

java - 在Java中旋转BufferedImage而不改变大小

java - 不确定 NoClassDefFoundError 背后的原因

java - spring服务层的一些方法如何分解

java - 使用 Java 将多个 pdf 压缩为单个 zip 文件

java - Junit测试用例: Connection refused case

java - 如何确定文件是否为 PDF 文件?