|
1
2
我在这里使用字节数组的十六进制编码。Base64编码的哈希
十六进制编码等于
简而言之
您的代码对签名属性进行两次哈希运算。只是不要散列返回的字节
详细分析示例pdf中的签名
因此,你的
调用似乎散列
最简单的解决方法是替换
通过
在里面
分析这些问题在你的评论中
好吧,您的问题不是第一个自定义itext签名过程导致错误或至少不需要的配置文件的问题。 在分析这些问题的过程中,第一步通常是提取嵌入的签名容器并在ASN.1查看器中检查它。 对于您的pdf,检查的主要结果是这样的签名看起来没有问题,并且您的签名属性不包含任何变量数据。
如果在它们中有一些变量数据(例如签名时间属性),则导致问题的候选可能是,一旦显式地创建了两次签名的属性。
这里的下一步是实际检查所涉及的散列。检查文档散列很简单,可以计算有符号字节范围散列并与
你的pdf结果是好的。 下面的步骤是更彻底地检查签名容器。在这种情况下,我曾经开始写一些支票,但没有走得很远。 SignatureAnalyzer 上课。我将它扩展为测试签名属性的哈希值,使用了您使用的签名算法,旧的。 RSASSA-PKCS1-v1_5 与许多其他签名算法相比,这一个允许简单地提取签名哈希。 在这里,您的pdf结果是不正常的,签名属性的散列不同于签名散列。 这里有两个常见的不匹配原因,
事实证明,后者就是这里的情况,散列被再次散列。 |
|
|
Lidia · 使用应用程序脚本批量签署文档(谷歌文档) 2 年前 |
|
|
JDChi · iText7多重签名 9 年前 |
|
|
dpilwal · itext不工作时的数字签名验证 9 年前 |
|
|
lucasdc · 如何签署嵌入时间戳并启用LTV的PDF? 9 年前 |