2016-01-06 57 views
4

我使用C#編寫EBICS實現,並且需要將我的三個證書的哈希值發送到我的銀行SHA256格式以啓用EBICS鏈接。c#中使用SHA 256的Hash X509證書#

我用BouncyCastle在C#中生成它們,現在我有一個X509Certificate2對象。

所以湊我的證書我用下面的代碼:

String HashCertificate = Certificat.GetCertHashString(); 

而且他還給我了以下結果:

21952A5F79CA3232A656794EE4532BECF5AE3960

但長度不匹配使用銀行證書的散列長度:

57436AD3D09989ED74F4FCCDBF7668C43F8BF87C933F90B065ED442A22E5B0BF

所以我覺得GetCertHashString()函數返回證書的散列SHA1格式,我不知道我怎麼能在SHA256散列它。

你能幫助我嗎?

預先感謝您

回答

6

由於MSDN says GetCertHashString方法總是

返回X.509v3證書作爲十六進制字符串的SHA1哈希值。

無論簽名算法如何,因爲它是在證書存儲區內部使用的Windows特定指紋。

您可以通過訪問RawData屬性中的證書內容來計算任何其他散列,例如,對於SHA256:

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

它的工作原理!謝謝 ! –