c#中带有SHA 256的哈希X509证书
本文关键字:哈希 X509 证书 SHA | 更新日期: 2023-09-27 18:29:06
我在C#中进行EBICS实现,我需要以SHA256格式向我的银行发送我的三个证书的哈希,以便启用与它的EBICS链接。
我用BouncyCastle在C#中生成了它们,现在我有了一个X509Certificate2
对象。
因此,为了散列我的证书,我使用了以下代码:
String HashCertificate = Certificat.GetCertHashString();
他还给我以下结果:
21952a5f79ca3232a656794ee532ecf5ae3960
但长度与银行证书哈希的长度不匹配:
57436ad3d09989 ed74f4fccdbf7668c43f8bf87c933f90b065 ed442a22e5b0bf
因此,我认为GetCertHashString()
函数以SHA1格式返回证书的哈希,我不知道如何以SHA256对其进行哈希。
你能帮我吗?
提前感谢
正如MSDN所说,GetCertHashString方法总是
以十六进制字符串的形式返回X.509v3证书的SHA1哈希值。
而不管签名算法如何,因为它是证书存储中内部使用的Windows特定指纹。
您可以通过从其RawData
属性访问证书内容来计算任何其他哈希,例如,对于SHA256:
using (var hasher = SHA256.Create())
{
var hash = hasher.ComputeHash(cert.RawData);
Console.WriteLine(BitConverter.ToString(hash));
}