在我的情况下,我设置签名和signedData的代码中有错误。我不小心交换了这些值。
因此,代替:
signedData = pdfUtils.getSignature(signedData);byte[] sig = pdfUtils.getSignedContent(signedData);
它应该是:
byte[] sig = pdfUtils.getSignature(signedData);signedData = pdfUtils.getSignedContent(signedData);
现在,它正在工作。我用来测试的文件已使用签名
adbe.pkcs7.detached。但是,如果使用其他签名方法,将无法正常工作。
因此,感谢@Tilman Hausherr向我指出ShowSignature.java示例。这就是签名验证的方式。
并且,也感谢@mkl的详细说明。
我现在知道,当创建签名时,将添加签名字段,并根据该新值计算哈希值。这就是验证有效的原因。您不需要没有签名字段的原始PDF。



