【发布时间】:2009-04-11 18:29:41
【问题描述】:
我正在使用此函数为密码生成哈希,然后将其存储在数据库(SQL Server)中。
代码如下:
byte[] saltBytes = new byte[16];
new RNGCryptoServiceProvider ().GetBytes (saltBytes);
string salt = Convert.ToBase64String (saltBytes);
string saltedPasswordHash =
FormsAuthentication.HashPasswordForStoringInConfigFile (password + salt, FormsAuthPasswordFormat.SHA1.ToString ());
现在的问题是:HashPasswordForStoringInConfigFile () 的输出是什么格式 - 我将其存储为 char(length) 还是 nchar(length)?
或者是否有任何其他首选方式来存储哈希,也许不是作为字符串?
非常感谢任何输入和半相关的 cmets。
【问题讨论】:
-
为了记录,这不是存储密码哈希的好方法。请参阅How to securely hash passwords?,如果需要我对Drop in replacement for FormsAuthentication.HashPasswordForStoringInConfigFile? 的回答,其中详细介绍了如何从这个转换到 PBKDF2 的选项,全部在 .NET 中 - 本质上,要么将所有内容转换为 RFC2898DeriveBytes(pw,salt,iterations),将所有内容转换为 RFC2898DeriveBytes (HashPasswordForStoringInConfigFile(pw, “MD5”),salt,iterations),或在用户登录时升级用户