Mar*_*ark 28 c# asp.net cryptography
在过去处理密码时,我总是在我的数据存储中分别存储盐和散列密码.今天我想更新一些遗留代码以使用RFC 2898哈希值.我偶然发现了这些Crypto.Hash方法System.Web.Helpers.看起来这些将为我完成大部分繁重的工作.还有GenerateSalt(),HashPassword()和VerifyHashedPassword()方法.该HashPassword()和VerifyHashedPassword()方法不拿盐值.HashPassword()方法的MSDN文档说:
"生成的哈希字节流的格式是{0x00,salt,subkey},在返回之前是base-64编码的."
我需要担心盐吗?文档似乎说会自动生成一个salt并存储在base-64编码值中?它是否正确?我需要存储的是从中返回的字符串HashPassword()?
Mar*_*ker 52
所有密码都需要加密,以便安全地散列它们.但是,在这种情况下,你是对的.System.Web.Helpers.Crypto负责为您创建一个salt.您不需要创建一个.它存储在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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8035 次 |
| 最近记录: |