How to sign xml element using RSA-SHA1 algorithm?
我需要使用rsa-sha1算法对XML文档的一个节点进行签名(并最终验证)。W3.ORG链路
RSA-SHA1
URI:
http://www.w3.org/2000/09/xmldsig#rsa-sha1
Specified in:
section 6.4.2 of [XMLDSIG-CORE2002]
我在遵循这个例子,但是我无法理解如何将算法更改为Required。
在此生成签名:
1 | signedXml.ComputeSignature(); |
唯一具有参数的重写需要
EDOCX1(link)反过来只允许创建hmac*和mac*算法,没有rsa-sha1。
用rsa-sha1在.NET中签署XML最痛苦的方式是什么?
编辑:
我正在尝试使用X509证书提取密钥。证书的签名算法属性为
这就是我分配它的方式:
1 2 3 4 5 | var signedXml = new SignedXml(xmlDoc); ... signedXml.SigningKey = (RSACryptoServiceProvider)cert.PrivateKey; ... signedXml.ComputeSignature(); |
生成的签名XML格式与预期的格式匹配,但
在。NET框架1.1通过.NET Framework 4.7您SHA-1和RSA的一个对象设置
如果。NET(有4.7.1预览)是安装到默认的RSA RSA想改变沙2个通过http://///github.com微软DOTNET BLOB /硕士/ / / dotnet471-changes.md net471释放。
所以,如果你真的想要一个RSA SHA-1签名你需要
a)设置一个
b)集
(这两个在电话
conversely,如果你想做更好的东西比RSA的SHA - 1的电流signedxml.signedinfo.signaturemethod版本上,集到
Word的警告:破碎的SHA - 1加密的目的被认为是现在A碰撞已被发现。当它不是广义足够的(在这一点任意的XML)的攻击,它可能会长大一点。你真的不应该是在任何新的使用SHA - 1的,和要考虑的东西,你的签名验证方法是更好的比SHA 1当决定是否接受一个基于符号文件。