我想知道是否有標準代碼使用密鑰生成SHA256哈希。我遇到了幾種類型的代碼,但是它們不會生成相同的輸出。什麼是使用C#生成HMAC SHA256的密鑰的標準代碼是什麼?
代碼發現在JokeCamp
private string CreateToken(string message, string secret)
{
secret = secret ?? "";
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(message);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return Convert.ToBase64String(hashmessage);
}
}
這裏是另外一個,我發現
private static string ComputeHash(string apiKey, string message)
{
var key = Encoding.UTF8.GetBytes(apiKey);
string hashString;
using (var hmac = new HMACSHA256(key))
{
var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
hashString = Convert.ToBase64String(hash);
}
return hashString;
}
由這兩個生成的代碼是會產生什麼不同的http://www.freeformatter.com/hmac-generator.html#ad-output
我會將SHA256
用於我們的外部API之一,其中消費者將散列數據並將其發送給我們。所以我們只是想確保我們使用標準方法,以便他們發送正確的散列。另外,我想知道是否有這方面的知名人士。我也試圖找到Bouncy Castle的解決方案,但是,我找不到使用密鑰哈希的方案。