使用以下函数,您可以使用 bcrypt 加密输入字符串。
public static string CreatePassword(string password)
{
// no need to provide a Salt value since bcrypt does that automatically
byte[] PasswordBytes = Encoding.ASCII.GetBytes(password);
return Crypter.Blowfish.Crypt(PasswordBytes);
}
这使用了很棒的CryptSharp,但是你如何根据这个函数返回的哈希来验证用户输入呢?
我在库中找不到任何功能来执行此操作。
我能想到的最好方法是使用以下方法:
public static bool ValidatePassword(string password, string passwordHash)
{
// crypt the entered password
string Crypted = Crypter.Blowfish.Crypt(Encoding.ASCII.GetBytes(password));
// compare the crypted password against the value in the database
if (String.Compare(Crypted, passwordHash, false) != 0) return false;
return true;
}
唯一的问题是盐值不会相同,因此这些值几乎总是不一致。