Java 从PDF文档中的数字签名提取日期
我正在尝试使用以下代码读取PDF文档中的数字签名日期:Java 从PDF文档中的数字签名提取日期,java,datetime,pdf,digital-signature,digital-certificate,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(
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();
}
...
试试看{
final PdfReader reader=新的PdfReader(this.etimesheet.getAbsolutePath());
最终AcroFields-reader.getAcroFields();
如果(字段!=null){
最终ArrayList名称-fields.getSignatureNames();
对于(int k=0;k
添加PdfPKSCS7行后,我收到警告“ExceptionConverter:java.security.NoSuchAlgorithmException:SHA256 MessageDigest不可用”
我需要什么来解决这个问题,或者是否有其他方法从数字签名中提取日期?OP遇到了
ExceptionConverter: java.security.NoSuchAlgorithmException: SHA256 MessageDigest not available
例外。根据所涉及的库和JRE版本,这意味着既没有安装“无限强度Java(TM)加密扩展策略文件”,也没有将Bouncy Castle注册为安全提供商
如果您的应用程序使用任何java.security
内容,最好使用前者。此外,如果您没有安装任何其他安全提供程序,则安装和注册BouncyCastle安全提供程序很可能会使您受益
正如谷歌的评论一样,该网站将展示如何实现后者:
动态安装提供程序
导入org.bouncycastle.jce.provider.BouncyCastleProvider
addProvider(新的BouncyCastleProvider())
您是否已将BouncyCastle注册为安全提供商?我不相信。我确实搜索了。添加
import org.BouncyCastle.jce.provider.BouncyCastleProvider;
和security.addProvider(new BouncyCastleProvider());
现在允许我获取SignDate().Thank.Ref:-动态安装提供程序。好的,我回答了我的原始评论。