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对其进行哈希。

你能帮我吗?

提前感谢

c#中带有SHA 256的哈希X509证书

正如MSDN所说,GetCertHashString方法总是

以十六进制字符串的形式返回X.509v3证书的SHA1哈希值。

而不管签名算法如何,因为它是证书存储中内部使用的Windows特定指纹。

您可以通过从其RawData属性访问证书内容来计算任何其他哈希,例如,对于SHA256:

using (var hasher = SHA256.Create())
{
    var hash = hasher.ComputeHash(cert.RawData);
    Console.WriteLine(BitConverter.ToString(hash));
}