我看到了这个问题Encrypting/Hashing plain text passwords in database
我知道我不应该使用md5("salt" + password); 我在python中看到了一个实现解决方案的例子。
是否有一个.NET内置函数可以使用参数,而不是编写自己的函数?
我看到了这个问题Encrypting/Hashing plain text passwords in database
我知道我不应该使用md5("salt" + password); 我在python中看到了一个实现解决方案的例子。
是否有一个.NET内置函数可以使用参数,而不是编写自己的函数?
我不认为有一个单一的函数可以实现这个功能,但你可以用几行代码来完成(这里使用SHA512,但还有其他选项):
using (var sha = new SHA512CryptoServiceProvider())
{
byte[] hashed = sha.ComputeHash(Encoding.Default.GetBytes(saltedPassword));
string output = Convert.ToBase64String(hashed);
}
请确保使用Crypto...类之一,以确保使用更安全的算法。
FormsAuthentication.HashPasswordForStoringInConfigFile
更好或更差的评论? - Kuba hasn't forgotten Monica请查看FormsAuthentication.HashPasswordForStoringInConfigFile
string hashMD5 = FormsAuthentication.HashPasswordForStoringInConfigFile(Pass + Salt, "MD5");
string hashSHA1 = FormsAuthentication.HashPasswordForStoringInConfigFile(Pass + Salt, "SHA1");
不应该使用MD5进行密码哈希!!!
不好!!!也不应该在单个哈希传递(md5或其他)上执行盐+密码!!!不好!!!
也不应该多次进行盐+密码哈希(除非像PBKDF2一样对每个哈希传递进行XOR!!!不好!!!
使用此API:https://sourceforge.net/projects/pwdtknet 好!!!
Convert.ToBase64String
,它与BitConverter.ToString
一样快,并且生成的字符串要短得多(在这种情况下为88字节而不是192字节)。如果纠正这两个问题,这可能会成为最佳答案,我认为。 - Ray Burns