【发布时间】:2013-08-07 11:24:37
【问题描述】:
我们正在使用以下代码针对 C# 中的敏感值生成 HMac 哈希
public string GenerateHMac(string key, string message)
{
var decodedKey = Convert.FromBase64String(key);
var hasher = new HMACSHA256(decodedKey);
var messageBytes = Encoding.Default.GetBytes(message);
var hash = hasher.ComputeHash(messageBytes);
return Convert.ToBase64String(hash);
}
传入的密钥是一个 256 位 base 64 编码的字符串。有人提出了一个问题,即我们是否应该使用 HMACSHA256、HMACSHA384 或 HMACSHA512 来散列值。
- 与 HMACSHA256 相比,使用 HMACSHA512 有哪些优势?
- 它是否更加安全?
- 使用较长的密钥是否会对性能产生显着影响?
作为旁注;如果我使用 HMACSHA512,我传递给构造函数的 decodedKey 值是否需要是 512 位密钥?
【问题讨论】:
-
wikipedia page 为它们提供了一些性能基准。
标签: c# security cryptography hmac