XML 签名中的“SignatureMethod”算法与“DigestMethod”算法

2024-04-26

如果我们以下面的 Signature 元素为例:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
      <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <ds:Reference URI="#_884D49DAD03AD60748547F8322C11AA0">
        <ds:Transforms>
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
        <ds:DigestValue>...</ds:DigestValue>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>...</ds:SignatureValue>
    <ds:KeyInfo>
      <ds:KeyName>...</ds:KeyName>
    </ds:KeyInfo>
 </ds:Signature>

有一个 SignatureMethod 算法(http://www.w3.org/2000/09/xmldsig#rsa-sha1 http://www.w3.org/2000/09/xmldsig#rsa-sha1)和 DigestMethod 算法(http://www.w3.org/2000/09/xmldsig#sha1 http://www.w3.org/2000/09/xmldsig#sha1).

据我了解,SignatureMethod 算法为“rsa-sha1”,意味着要签名的内容首先使用 SHA1 进行散列(消化),然后使用 RSA 进行签名。

DigestMethod 算法是否始终等于 SignatureMethod 算法中指定的摘要机制(sha1“rsa-sha1”的一部分)?

我相信事实并非如此,因为两次指定相同的算法是没有用的。我推测可能存在多个可以使用不同 DigestMethod 算法进行摘要的“引用”,并且这些摘要的集合将使用 SignatureMethod 算法指定的摘要机制再次进行哈希处理。

I'm trying要理解这一点,请参阅“XML 签名语法和处理”规范。如果有人可以确认我是否理解正确,或者解释这两种算法的用途,我将非常感激。谢谢。


您完全正确,DigestMethod Algorithm 元素引用其父 Reference 元素。您可以为多个引用元素使用不同的 DigestMethod 算法,并使用不同的 SignatureMethod 算法来对所有引用进行哈希和签名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XML 签名中的“SignatureMethod”算法与“DigestMethod”算法 的相关文章

随机推荐

  • 如何处理 ember.js 组件中的自定义事件?

    我是 Ember js 的新手 在理解其原理时遇到了一些问题 我知道行动向上 数据向下但在现实生活中 假设我有Fotorama http fotorama io 在 my gallery 组件中初始化 我不知道这是否可以 但我是在didIn
  • EditText请求焦点

    我正在设计一个登录页面 UserName Password LoginButton 当活动开始时 我希望焦点转到 用户名 文本框并显示键盘 我正在使用以下代码 boolean checkFocus user requestFocus Log
  • 从数据框中删除所有非唯一行

    抱歉 这是我的第二篇文章 如果有什么不明白的地方请告诉我 我正在尝试删除所有有重复项的行 我已经尝试过keep False参数为drop duplicates 它只是没有做正确的事情 假设我的数据框看起来像这样 ORDER ID ITEM
  • 将带有 UIElement 的 FlowDocument 导出为 rtf

    我正在尝试导出一个FlowDocument其中包含一个 rtf 网格 我使用了以下代码 using FileStream fs new FileStream C demo rtf FileMode OpenOrCreate FileAcce
  • 我应该在 Uber 应用程序中放置什么重定向 URL?

    我正在阅读 Uber 的 sdk api 文档 但我是菜鸟 我不知道redirectURL 应该是什么 这是 Uber 提供的给定网址吗 因为我找不到它 或者是由应用程序开发人员部署自己的服务器 本地计算机定制的网页的 URL 如果是的话我
  • json_encode 可以触发 catch 块吗? [复制]

    这个问题在这里已经有答案了 这可能是一个非常简单的问题 但我找不到任何相关信息 我使用的系统聚合了来自不同来源的大量数据 然后将这些数据存储在数据库中 在大多数情况下 系统工作正常 但有时我们会遇到一个问题 即数据可能具有我们的系统不喜欢的
  • 使用 Spring Data 进行不区分大小写的排序

    如何使用 Spring data Pageable 进行不区分大小写的排序 我的存储库中有这个方法 public interface ItemRepository extends QueryDslPredicateExecutor
  • 使用类方法作为 celery 任务

    我正在尝试使用类的方法作为 django celery 任务 并使用 task 装饰器对其进行标记 描述了同样的情况here https stackoverflow com questions 8846489 celery python o
  • viewForHeaderInSection 的框架始终大小相同

    UIView tableView UITableView tableView viewForHeaderInSection NSInteger section if section 0 UIView view UIView alloc in
  • 在Python中分配空值或字符串

    我想了解分配空值和空输出之间是否有区别 如下所示 1 gt 像这样分配一个值 string 2 gt 作为输出返回空值 string abcd str1 str2 split 换句话说 1 gt 中的 string 和2 gt 中的 str
  • 检查是否有任何输入元素处于焦点

    我有一个 jquery 脚本 当按下键盘上的任意键时 它会显示一个 div 我想向脚本添加一个条件 仅当页面上没有其他输入区域 文本区域或文本字段 处于焦点时才运行脚本 这样您就可以在页面的其余部分实际键入内容 而无需显示 div docu
  • 如何在 Linux 中离线安装 vscode-server [重复]

    这个问题在这里已经有答案了 我正在尝试安装 VScode 远程 ssh 扩展 但我的远程主机无法连接到互联网 因此无法下载软件 所以我收到了一些类似的错误消息 SSH Resolver called for ssh remote kf SS
  • java与maven和eclipse中的clojure混合

    我创建了一个示例多语言程序 我有一个用java实现的传感器和一个机器人 以及用clojure实现的AI 我无法正确连接maven src main java clojuretest DistanceSensor java AI clj us
  • NiFi 如何将 InvokeHTTP 处理器与 SOAP 结合使用

    我看到其他人已经能够使其发挥作用 但是我无法找到足够的详细信息来解释他们如何实现这一目标 以便我能够使其发挥作用 This guy http apache nifi developer list 39713 n7 nabble com SO
  • 是否存在具有单个强所有者和多个弱引用的共享指针?

    我正在寻找类似于的智能指针Arc Rc只不过它不允许共享所有权 我想要尽可能多的rc Weak我需要的参考资料 但我只想one强引用 又称所有者 我想通过类型系统来强制执行这一点 Arc Rc可以克隆 并且可以在多个地方拥有它们 滚动我自己
  • 如果在 Application_Start 中抛出未处理的异常会发生什么?

    是否会针对下一个请求再次运行 Application Start 方法 它是否取决于 ASP NET 版本 托管服务器版本和 或其他上下文 我试图确定在那里加载关键程序集是否是一件好事 例如 对于整个应用程序的功能是否至关重要的数据访问组件
  • filehelpers - 解析可变行长度

    我必须解析 C a CSV文件 具有变量 宽度 和 2 行标题信息 第一行是名称 第二行是单位 数据如下 示例1 CSV timestamp NAME 1 NAME 2 NAME 3 NAME 4 ms unit 1 unit 2 unit
  • 设置 xamarin studio 以与 PCL 和 MVVMCross 配合使用

    我真的很喜欢 Xamarin Studio 并且正在寻找一个模板解决方案来开始使用 MvvmCross 开发跨设备应用程序 但我找不到如何将项目设置为与 Xamarin Studio 一起使用 PCL 和 MvvmCross 如果有人能给我
  • 在 C++ 中求和 1<<2 和 1<<3 时出现奇怪的输出

    所以我只是尝试用 C 进行一些位操作 这是我尝试过的 int a 1 lt lt 2 cout lt
  • XML 签名中的“SignatureMethod”算法与“DigestMethod”算法

    如果我们以下面的 Signature 元素为例