gpt4 book ai didi

c# - System.Web.Helpers.Crypto - 盐在哪里?

转载 作者:IT王子 更新时间:2023-10-29 04:16:15 26 4
gpt4 key购买 nike

过去,在处理密码时,我总是在我的数据存储中分别存储盐分密码和散列密码。今天我想更新一些遗留代码以使用 RFC 2898 哈希值。我遇到了 System.Web.Helpers 中的 Crypto.Hash 方法。看起来这些将为我完成大部分繁重的工作。有 GenerateSalt()HashPassword()VerifyHashedPassword() 方法。 HashPassword()VerifyHashedPassword() 方法不采用加盐值。 HashPassword() 方法的 MSDN 文档说:

“生成的哈希字节流格式为{0x00,salt,subkey},返回前经过base-64编码。”

我需要担心盐吗?文档似乎说盐会自动生成并存储在 base-64 编码值中?这个对吗?我只需要存储从 HashPassword()?

返回的字符串

最佳答案

回答

所有密码都需要加盐以安全地散列它们。然而,在这种情况下,你是对的。 System.Web.Helpers.Crypto 负责为您创建盐。 不需要创建一个。它存储在 Crypto.HashPassword() 返回的字符串中。

例子

您需要做的就是这样。

using System.Web.Helpers;

public void SavePassword(string unhashedPassword)
{
string hashedPassword = Crypto.HashPassword(unhashedPassword);
//Save hashedPassword somewhere that you can retrieve it again.
//Don't save unhashedPassword! Just let it go.
}

public bool CheckPassword(string unhashedPassword)
{
string savedHashedPassword = //get hashedPassword from where you saved it

return Crypto.VerifyHashedPassword(savedHashedPassword, unhashedPassword)
}

更多信息

  • 如果您想查看 Crypto 类的源代码,可以查看它 here .
  • here是关于类(class)及其背后的一些想法的好博客。

关于c# - System.Web.Helpers.Crypto - 盐在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17693918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com