当前位置: 首页 > article >正文

第三十五章 结合加密和签名

文章目录

  • 第三十五章 结合加密和签名
  • 使用非对称密钥签名并加密
  • 使用非对称密钥加密并签名

第三十五章 结合加密和签名

可以在同一条消息中加密和签名。在大多数情况下,只需组合前面主题中给出的方法即可。本主题讨论了多种场景。

使用非对称密钥签名并加密

要签名然后加密(使用非对称密钥时),请执行以下操作:

  1. 按照添加数字签名中的步骤进行操作。
  2. 按照加密安全标头元素中的步骤进行操作。

或者按照加密 SOAP 主体中的步骤进行操作。

使用非对称密钥加密并签名

要仅加密 SOAP 主体,然后添加数字签名(使用非对称密钥时),请执行以下操作:

  1. 按照加密 SOAP 主体中的步骤进行操作。
  2. 按照添加数字签名中的步骤进行操作。

要加密任何安全标头元素,然后添加数字签名(使用非对称密钥时),必须使用顶级 <ReferenceList> 元素(在文档的其他地方不需要)。在这种情况下,请执行以下操作:

  1. 按照加密安全标头元素中的步骤 1 — 4 进行操作。
  2. 对于要加密的每个安全标头元素,根据该元素创建一个 <EncryptedData> 元素。为此,请调用 %XML.Security.EncryptedDataCreate() 类方法。在此过程中,指定所有三个参数:

a. 在前面的步骤中创建的加密密钥实例。

b. 要加密的安全标头元素。

c. $$$SOAPWSReferenceEncryptedKey,指定 <EncryptedData> 如何使用加密密钥实例。

 set refopt=$$$SOAPWSReferenceEncryptedKey
 set encdata=##class(%XML.Security.EncryptedData).Create(enckey,userToken,refopt)
  1. 创建 <ReferenceList> 元素。为此调用 %XML.Security.ReferenceList%New() 方法。例如:
  2. 在此 <ReferenceList> 中,创建一个指向 <EncryptedData> 元素的Reference>。为此,请对每个 <EncryptedData> 执行以下操作:

a. 调用 %XML.Security.DataReferenceCreate() 类方法,并指定加密数据实例作为参数。此方法返回 %XML.Security.DataReference的实例。

b. 调用引用列表实例的 AddReference() 方法并指定数据引用实例作为参数。

 set dataref=##class(%XML.Security.DataReference).Create(encdata)
 do reflist.AddReference(dataref)
  1. <ReferenceList> 元素添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于要添加的元素,请指定您的引用列表实例。例如:
 do ..SecurityOut.AddSecurityElement(reflist)

注意:在添加其他项目之前,必须先添加 <ReferenceList> 元素。

  1. <EncryptedKey> 元素添加到 WS-Security 标头元素。使用 AddSecurityElement()。例如:
 do ..SecurityOut.AddSecurityElement(enckey)
  1. 将加密的安全标头元素添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。在本例中,指定两个参数:

a. 要包含的安全标头元素(而不是基于该元素的 %XML.Security.EncryptedData的实例)。

b. 加密密钥实例。第二个参数指定第一个参数指定的项的放置位置。如果参数为 AB,则 IRIS 确保 AB 之后。指定此项以便收件人首先处理加密密钥,然后再处理依赖于它的加密安全标头元素。

 do ..SecurityOut.AddSecurityElement(userToken,enckey)

或者,如果加密的安全标头元素是<Signature>,,则使用 AddSecurityElement()

  1. 按照步骤添加数字签名。
  2. 发送 SOAP 消息。请参阅添加安全标头元素中的一般注释。

http://www.kler.cn/news/335123.html

相关文章:

  • 第二十三章-容器控件QTabWidget
  • vue2集成tailwind.css,快速开发前台页面
  • 深度学习:迁移学习
  • Spire.PDF for .NET【页面设置】演示:设置 PDF 的查看器首选项和缩放系数
  • o1-preview 在 IMO 2024 第一题的实测表现
  • 系统架构设计师论文《论SOA在企业集成架构设计中的应用》精选试读
  • javaScript数组(16个案例+代码+效果图)
  • 安装配置pytorch(cuda、、cudnn、torch、torchvision对应版本)
  • 大数据利器Hadoop:从基础到实战,一篇文章掌握大数据处理精髓!
  • 已解决:org.springframework.web.HttpMediaTypeNotAcceptableException
  • 免费!推荐10个可商用模特图片素材网站!
  • 实现Xshell与虚拟机中Linux服务器的连接(附常见错误解决)
  • vite学习教程06、vite.config.js配置
  • 54.二叉树的最大深度
  • 全栈开发从未如此轻松:Bolt.new 让 AI 助力编程体验
  • 药物识别与分类系统源码分享
  • c#代码介绍23种设计模式_19状态者模式
  • 【WPF开发】超级详细的“文件选择”(附带示例工程)
  • 华为手机连接蓝牙音响后播放声音小的问题分析
  • RCE+[伪协议综合]