【发布时间】:2017-09-06 12:05:29
【问题描述】:
我需要使用 RSA-SHA1 算法对 XML 文档的其中一个节点进行签名(并最终验证)。 w3.org link
RSA-SHA1 网址:
http://www.w3.org/2000/09/xmldsig#rsa-sha1
指定于:
[XMLDSIG-CORE2002] 的第 6.4.2 节
我关注this example,但不知道如何将算法更改为必需。
签名生成发生在这里:
signedXml.ComputeSignature();
唯一带有参数的覆盖需要KeyedHashAlgorithm:
public void ComputeSignature(KeyedHashAlgorithm macAlg);(link)
KeyedHashAlgorithm (link) 反过来只允许创建 HMAC* 和 MAC* 算法并且没有 RSA-SHA1。
在 .Net 中使用 RSA-SHA1 签署 XML 最轻松的方法是什么?
编辑:
我正在尝试使用 X509 证书来提取密钥。证书的签名算法属性为sha1RSA。
这是我分配它的方式:
var signedXml = new SignedXml(xmlDoc);
...
signedXml.SigningKey = (RSACryptoServiceProvider)cert.PrivateKey;
...
signedXml.ComputeSignature();
生成的签名 xml 格式与预期的匹配,但是 digest 和 signature 值无效。
【问题讨论】:
标签: c# .net xml cryptography digital-signature