我看到了这个问题Encrypting/Hashing plain text passwords in database
我知道我不应该做md5(“盐”+密码);我在python中看到了一个解决方案的实现。
是否有一个.NET内置函数与params我可以使用而不是自己编写?
答案 0 :(得分:2)
我认为没有一个功能,但您可以在几行中完成(这里使用SHA512,但还有其他选项):
using (var sha = new SHA512CryptoServiceProvider())
{
byte[] hashed = sha.ComputeHash(Encoding.Default.GetBytes(saltedPassword));
string output = Convert.ToBase64String(hashed);
}
确保使用其中一个Crypto ...类,以确保使用更安全的算法。
答案 1 :(得分:1)
查看FormsAuthentication.HashPasswordForStoringInConfigFile
string hashMD5 = FormsAuthentication.HashPasswordForStoringInConfigFile(Pass + Salt, "MD5");
string hashSHA1 = FormsAuthentication.HashPasswordForStoringInConfigFile(Pass + Salt, "SHA1");
答案 2 :(得分:1)
不,你不应该使用MD5进行密码散列!!!!!
坏!!!!!你也不应该通过一个哈希传递(md5或其他)来执行salt +密码!坏!!!!
你也不应该多次使用盐+密码哈希(根据PBKDF2,每个散列传递都是异常的!不好!!!!
使用此API:https://sourceforge.net/projects/pwdtknet好!!!!!
答案 3 :(得分:1)
是的,.NET Framework 2.0及更高版本(到目前为止包括4.5)在名为Rfc2898DeriveBytes的类中实现了PBKDF2(也称为RFC2898和PKCS#5v2)。从技术上讲,它实现了PBKDF2-HMAC-SHA-1,虽然不如PBKDF2-HMAC-SHA-512,但仍然可以用于密码散列。
PBKDF2论点:
请注意HMACSHA512 versus Rfc2898DeriveBytes for password hash包含一些示例.NET代码,我没有详细分析,但这可能是一个有用的起点。