【问题标题】:How to verify HMACSHA256 hashed password with salt如何使用盐验证 HMACSHA256 哈希密码
【发布时间】:2013-06-18 21:33:31
【问题描述】:

我有一个包含用户名、散列密码及其盐的表,现在在我的应用程序中,我想验证下面带有散列的纯密码是我尝试过的,但不会生成相同的散列,请建议我该如何解决这个问题问题。

byte[] bIn = Encoding.Unicode.GetBytes(Password);
byte[] bSalt = Convert.FromBase64String(SaltValue);
byte[] bAll = new byte[bSalt.Length + bIn.Length];

Buffer.BlockCopy(bSalt, 0, bAll, 0, bSalt.Length);
Buffer.BlockCopy(bIn, 0, bAll, bSalt.Length, bIn.Length);

HMACSHA256 s = new HMACSHA256();

return Convert.ToBase64String(s.ComputeHash(bAll));

【问题讨论】:

  • 只需使用与最初将哈希/盐存储在数据库中时完全相同的方法。

标签: c# .net hash


【解决方案1】:

您应该创建一种方法来使用盐对密码进行哈希处理。然后使用此方法对初始密码进行加密。如果您以后重复使用此方法验证密码,它将始终匹配。

确保您从数据库中为该帐户检索到正确的盐。

【讨论】:

  • 实际上密码已经从 ASP.NET MVC 4 默认算法类型(即 HMACSHA256)散列,现在我正在使用相同的数据库和登录详细信息开发另一个应用程序
  • 您应该掌握哈希算法代码。它可能会与你的略有不同。或者你可以让他们在 API 中提供算法
  • stackoverflow.com/questions/1300890/… 与其他算法的链接
  • 我也有那个项目,他们正在使用会员默认散列算法,正如我所说的那样,HMACSHA256 是 mvc 4 的默认算法,如果据我所知没有指定的话跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2012-01-31
  • 1970-01-01
  • 2011-12-06
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多