我现在整整一个星期都在为此苦苦挣扎,希望有人可以帮助我。
我需要使用 SHA256 和 xmldsig 对 xml 进行签名。为此,我使用 SignedXML 类。在查看此类时,我看到它使用加载键的 SignatureAlgorithm 值来确定要使用的散列类型。
无论我如何加载密钥(通过证书存储或通过加载证书文件),它都会将 SHA1 显示为 SignatureAlgorithm。当我在 MMC 证书存储中查找我的证书的详细信息时,它显示 SHA256 作为 SignatureAlgorithm。
我尝试了 openssl 和 makecert 来生成一个 SHA256 证书密钥,但是两者都将在 .Net 中加载为 SHA1 所以 signedXml.ComputeSignature(); 将使用 SHA1 作为 SignatureMethod
.Net 4.0 应该支持 SHA256 吧?