c#

时间:2016-01-06 13:35:23

标签: c# hash certificate sha256 bank

我在C#中使用EBICS实现,我需要以 SHA256格式向我的银行发送三个证书的哈希值,以便启用EBICS链接。

我使用BouncyCastle在C#中生成它们,现在我有一个X509Certificate2对象。

为了散列我的证书,我使用了以下代码:

String HashCertificate = Certificat.GetCertHashString();

他还给我以下结果:

  

21952A5F79CA3232A656794EE4532BECF5AE3960

但是长度与银行证书的散列长度不匹配:

  

57436AD3D09989ED74F4FCCDBF7668C43F8BF87C933F90B065ED442A22E5B0BF

所以我认为GetCertHashString()函数以 SHA1 格式返回证书的哈希值,我不知道如何在 SHA256 中哈希。

你能帮帮我吗?

提前谢谢

1 个答案:

答案 0 :(得分:7)

始终为MSDN says GetCertHashString方法

  

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

无论签名算法如何,因为它是在certifcates商店内部使用的Windows特定指纹。

您可以通过访问其RawData媒体资源中的证书内容来计算任何其他哈希值。对于SHA256:

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