【发布时间】:2026-02-01 07:15:03
【问题描述】:
我正在尝试使用以下代码读取 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 行后,我收到警告“ExceptionConverter: java.security.NoSuchAlgorithmException: SHA256 MessageDigest not available”。
我需要什么来解决这个问题,或者是否有其他方法可以从数字签名中提取日期?
【问题讨论】:
-
您是否将 BouncyCastle 注册为安全提供商?
-
我不相信我是。我确实搜索了register BouncyCastle as security provider。添加
import org.bouncycastle.jce.provider.BouncyCastleProvider;和Security.addProvider(new BouncyCastleProvider());现在可以让我getSignDate()。谢谢。参考:Provider Installation - Java APIs 1.X - The Legion of the Bouncy Castle - 动态安装提供程序。 -
好的,我将我原来的评论作为答案。
标签: java datetime pdf digital-signature digital-certificate