我尝试使用以下代码阅读PDF文档中的数字签名日期:
try {
final PdfReader reader = new PdfReader(this.etimesheet.getAbsolutePath());
final AcroFields fields - reader.getAcroFields();
if (fields != null) {
final ArrayList names - fields.getSignatureNames();
for (int k=0; k < names.size(); ++k) {
String name = (String)names.get(k);
PdfPKCS7 pk = fields.verifySignature(name); // Code starts generating Warnings here
// Calendar cal = pk.getSignDate();
}
...
添加PdfPKSCS7行后,我收到警告&#34; ExceptionConverter:java.security.NoSuchAlgorithmException:SHA256 MessageDigest不可用&#34;。
我需要解决此问题,还是有其他方式从数字签名中提取日期?
答案 0 :(得分:0)
OP经历了
ExceptionConverter: java.security.NoSuchAlgorithmException: SHA256 MessageDigest not available
异常。根据所涉及的库和JRE版本,这意味着既没有安装“Unlimited Strength Java(TM)密码术扩展策略文件”,也没有注册Bouncy Castle作为安全提供者。
如果您的应用程序使用任何java.security
内容,那么执行前者总是一个好主意。此外,如果您没有安装任何其他安全提供程序,则很可能会从安装和注册BouncyCastle安全提供程序中获益。
当OP google'd时,网站BouncyCastle Provider Installation将展示如何执行后者:
动态安装提供程序
import org.bouncycastle.jce.provider.BouncyCastleProvider;
...
Security.addProvider(new BouncyCastleProvider());