我正在为演示做准备,我需要了解HMACSHA1是如何工作的。我明白盐是什么,我知道它有很多循环,但它到底是如何工作的呢?
什么时候加盐?
仅使用标准的.NET SHA1散列函数,如何重新创建HMACSHA1算法?我想手动完成它,而不是使用PBKDF2实现。
我原以为下面两段代码会给出相同的输出.但他们不知道我哪里出了错?
HMACSHA1 hmac = new HMACSHA1(System.Text.Encoding.Unicode.GetBytes("test"));
var x = hmac.ComputeHash(System.Text.Encoding.Unicode.GetBytes("test"));
Console.WriteLine(Convert.ToBase64String(x));
SHA1 sha1 = new SHA1Managed();
var y = sha1.ComputeHash(System.Text.Encoding.Unicode.GetBytes("testtest"));
var yy = System.Text.Encoding.Unicode.GetBytes("test").ToString() + y;
var yyy = sha1.ComputeHash(System.Text.Encoding.Unicode.GetBytes(yy));
Console.WriteLine(Convert.ToBase64String(yyy));发布于 2016-09-01 09:53:17
你把事情搞糊涂了。HMAC-SHA1 1是一个"基于哈希的消息认证代码“,它使用SHA1作为散列。PBKDF2是一个密钥派生函数.在这样一个函数的上下文中,HMACs可以是一个原语,但它们不是等价的。
您可以使用HMAC来创建咸散列,但是您可以简单地在散列之前直接将盐分添加到值中,并实现相同的目标。HMACs通常用于验证消息的真实性。
对于.net问题,我建议您使用堆栈溢出来询问,但是您可能会看到System.Security.Cryptography命名空间中的HMACSHA1 1类。
https://security.stackexchange.com/questions/135537
复制相似问题