【发布时间】:2018-10-26 13:08:41
【问题描述】:
我做了两个应该做同样事情的实现:用给定的 X509 证书签署一个 XML 文件。
- 我使用本机 Java XML 数字签名 API(来自 javax.xml.crypto.dsi)所做的第一个。
- 我在 Kotlin 中实现的第二个(我的目标是在 Android 中运行它)使用 Apache Santuario XML Security 版本 2.0.3。
发生的情况是,对于要签名的完全相同的 XML 文件,它会为 SignatureValue 生成不同的值。但是 XML 的所有其他属性都完全相同:
- DigestValue 相同,证明文件相同。
- KeyInfo/X509Data/X509Certificate 是相等的,所以证书肯定是一样的。
- CanonicalizationMethod、SignatureMethod、DigestMethod 和 Transform 算法完全相同。
我什至尝试了小型 XML(例如,只有一个
是否有任何情况下
【问题讨论】:
-
据此,可以归结为 C14N 实现。有些添加最后一个空格,有些不添加groups.google.com/forum/#!topic/xmlseclibs/qCDQvKLyMH8
标签: java xml apache digital-signature xml-signature