gpt4 book ai didi

java - 检查 XADES 标志的哈希值

转载 作者:行者123 更新时间:2023-12-01 09:42:34 36 4
gpt4 key购买 nike

Java 程序将 PDF 文档发送到外部系统并接收该文档的 XADES 标志。

我想检查 PDF 文档的哈希值是否与 Xades 符号中包含的哈希值匹配。所以我计算了PDF文档的SHA1,但它与ds:DigestValue(fpm + e6K287hHh1xlYxXoZ3Q3bkQ =)中的散列不同。为什么?我确信我正在正确计算 PDF 文档哈希。

 <documentoSGIFE>
<documentoOriginal Id="original" encoding="base64" nombreFichero="371F1EDC7D2D1B22E0500C0AD23624FD.PDF">...</documentoOriginal>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature001">
<ds:SignedInfo Id="SignedInfo001">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference Id="Reference001_001" URI="#original">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>fpm+e6K287hHh1xlYxXoZ3Q3bkQ=</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="Reference001_002" Type="http://uri.etsi.org/01903/v1.2.2#SignedProperties" URI="#SignedProperties001">...</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="SignatureValue001">...</ds:SignatureValue>
<ds:KeyInfo Id="KeyInfo001">...</ds:KeyInfo>
<ds:Object>...</ds:Object>
</ds:Signature>
</documentoSGIFE>

谢谢

最佳答案

DigestValue 并不直接是文档的哈希值。它包含将哈希算法应用于 Reference 元素属性

中定义的转换资源的 Base64 编码结果

查看此帖子了解更多详细信息 https://stackoverflow.com/a/7589216/6371459

XAdES 基于 XMLSignatures 构建,受 Java 标准支持。您可以使用标准 validator 来验证基本数字签名。查看引用文档http://www.oracle.com/technetwork/articles/javase/dig-signature-api-140772.html

不幸的是,根据您的 XAdES 签名的特征,它并不总是可以通过 Java 标准进行验证。在这种情况下,我建议使用欧盟支持的开源项目SD-DSS https://joinup.ec.europa.eu/asset/sd-dss/description

关于java - 检查 XADES 标志的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38344500/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com