当前位置:  开发笔记 > 编程语言 > 正文

在c#中使用SHA 256的哈希X509证书

如何解决《在c#中使用SHA256的哈希X509证书》经验,为你挑选了1个好方法。

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

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

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

String HashCertificate = Certificat.GetCertHashString();

他还给我以下结果:

21952A5F79CA3232A656794EE4532BECF5AE3960

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

57436AD3D09989ED74F4FCCDBF7668C43F8BF87C933F90B065ED442A22E5B0BF

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

你能帮我吗 ?

先感谢您



1> dewaffled..:

由于MSDN总是说 GetCertHashString方法

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

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

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

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

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有