在 c# 中使用 SHA 256 散列 X509 证书
Hash X509 certificate with SHA 256 in c#
我在 C# 中实现 EBICS,我需要将我的三个证书的散列以 SHA256 格式 发送到我的银行,以便启用 EBICS link用它。
我在 C# 中使用 BouncyCastle 生成了它们,现在我有了一个 X509Certificate2
对象。
为了散列我的证书,我使用了以下代码:
String HashCertificate = Certificat.GetCertHashString();
他 return 我得到以下结果:
21952A5F79CA3232A656794EE4532BECF5AE3960
但长度与银行证书的哈希长度不匹配:
57436AD3D09989ED74F4FCCDBF7668C43F8BF87C933F90B065ED442A22E5B0BF
所以我认为 GetCertHashString()
函数 return 证书的哈希值采用 SHA1 格式,我不知道如何在 SHA256。
你能帮帮我吗?
提前致谢
作为 MSDN says GetCertHashString 方法总是
Returns the SHA1 hash value for the X.509v3 certificate as a hexadecimal string.
不考虑签名算法,因为它是 Windows 证书存储内部使用的特定指纹。
您可以通过从 RawData
属性 访问证书内容来计算任何其他哈希值,例如对于 SHA256:
using (var hasher = SHA256.Create())
{
var hash = hasher.ComputeHash(cert.RawData);
Console.WriteLine(BitConverter.ToString(hash));
}
我在 C# 中实现 EBICS,我需要将我的三个证书的散列以 SHA256 格式 发送到我的银行,以便启用 EBICS link用它。
我在 C# 中使用 BouncyCastle 生成了它们,现在我有了一个 X509Certificate2
对象。
为了散列我的证书,我使用了以下代码:
String HashCertificate = Certificat.GetCertHashString();
他 return 我得到以下结果:
21952A5F79CA3232A656794EE4532BECF5AE3960
但长度与银行证书的哈希长度不匹配:
57436AD3D09989ED74F4FCCDBF7668C43F8BF87C933F90B065ED442A22E5B0BF
所以我认为 GetCertHashString()
函数 return 证书的哈希值采用 SHA1 格式,我不知道如何在 SHA256。
你能帮帮我吗?
提前致谢
作为 MSDN says GetCertHashString 方法总是
Returns the SHA1 hash value for the X.509v3 certificate as a hexadecimal string.
不考虑签名算法,因为它是 Windows 证书存储内部使用的特定指纹。
您可以通过从 RawData
属性 访问证书内容来计算任何其他哈希值,例如对于 SHA256:
using (var hasher = SHA256.Create())
{
var hash = hasher.ComputeHash(cert.RawData);
Console.WriteLine(BitConverter.ToString(hash));
}