首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HMACSHA1算法到底是如何工作的?

HMACSHA1算法到底是如何工作的?
EN

Security用户
提问于 2016-09-01 07:53:10
回答 1查看 5.5K关注 0票数 1

我正在为演示做准备,我需要了解HMACSHA1是如何工作的。我明白盐是什么,我知道它有很多循环,但它到底是如何工作的呢?

什么时候加盐?

仅使用标准的.NET SHA1散列函数,如何重新创建HMACSHA1算法?我想手动完成它,而不是使用PBKDF2实现。

我原以为下面两段代码会给出相同的输出.但他们不知道我哪里出了错?

代码语言:javascript
复制
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));
EN

回答 1

Security用户

回答已采纳

发布于 2016-09-01 09:53:17

你把事情搞糊涂了。HMAC-SHA1 1是一个"基于哈希的消息认证代码“,它使用SHA1作为散列。PBKDF2是一个密钥派生函数.在这样一个函数的上下文中,HMACs可以是一个原语,但它们不是等价的。

您可以使用HMAC来创建咸散列,但是您可以简单地在散列之前直接将盐分添加到值中,并实现相同的目标。HMACs通常用于验证消息的真实性。

对于.net问题,我建议您使用堆栈溢出来询问,但是您可能会看到System.Security.Cryptography命名空间中的HMACSHA1 1类

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/135537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档