我想知道是否有标准代码使用密钥生成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的解决方案,但是,我找不到使用密钥哈希的方案。