从PDF文档中的数字签名中提取日期

时间:2016-05-16 16:42:17

标签: java datetime pdf digital-signature digital-certificate

我尝试使用以下代码阅读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;。

我需要解决此问题,还是有其他方式从数字签名中提取日期?

1 个答案:

答案 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());