【问题标题】:Namespace prefix rewriting for XML cononicalization in Java?在 Java 中为 XML cononicalization 重写命名空间前缀?
【发布时间】:2023-02-18 16:02:38
【问题描述】:

我正在尝试 1) 计算 XML 字符串的数字签名,2) 将 XML 字符串解组为 Java 对象,3) 将对象编组回 XML 字符串,以及 4) 重新计算签名,并根据步骤 1 中的签名。

问题是名称空间前缀通常在往返过程中发生变化(步骤 2-3),因此我需要一种方法在往返前后对它们进行标准化。否则,数字签名(步骤 1 和 4)显然不会匹配。

我想我需要类似的东西PrefixRewrite="顺序"https://www.w3.org/TR/xml-c14n2/Overview_diff.html#sec-Example-PrefixRewriteSeq 的第 2.5.4 节中。我找到了一个 Python 库,据说它可以做到这一点 (https://github.com/dept2/c14n2py),但我似乎找不到具有该选项的 Java 库(org.apache.xml.security.c14n.Canonicalizer 没有它)。我还能够在我的编组器中对名称空间前缀进行硬编码,但这对我来说不是一个可接受的解决方案。

任何人都可以使用 PrefixRewrite="sequential" 选项推荐用于 XML 规范化的 Java 库吗?

谢谢!!

【问题讨论】:

  • 是否应该使用 CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS 而不是前缀重写?
  • 不幸的是,该选项不保留名称空间前缀。

标签: java xml xml-namespaces canonicalization


【解决方案1】:

python 库 c14n2py 是从附近的 Java 库的源代码编写的:https://github.com/dept2/c14n2 你可以尝试使用它

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多