HashPasswordForStoringInConfigFile()的输出格式是什么格式以及如何以最佳方式存储它?

时间:2009-04-11 18:29:42

标签: c# hash types passwords

我正在使用此函数为密码生成哈希值,然后将其存储在数据库(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(长度)还是nchar(长度)?

或者是否存在其他任何存储哈希的首选方式,可能不是字符串?

非常感谢任何输入和半相关评论。

2 个答案:

答案 0 :(得分:1)

SQL Server支持用于存储二进制数据的二进制列(binary(len)varbinary(len))。您可能想要考虑使用它们。在这种情况下,您可以直接使用System.Security.Cryptography.SHA512Managed等类,而不是HashPasswordForStoringInConfigFile

答案 1 :(得分:1)

由于您使用的是C#,因此使用BCrypt散列解决方案可能值得考虑。它是由编写OpenBSD的人在BCrypt加密算法上设计的,是一种非常强大的算法。最好的部分是你不必担心盐(但它们在那里),随着时间的推移你可以使盐的生成变得困难。

BCrypt.net - Strong Password Hashing for .NET and Mono