我想知道如何对密码进行加盐和哈希处理?我在网上找到了很多关于它的例子,但我还是做不好。
我有这个代码来生成盐和哈希
public static byte[] GetSalt()
{
var p = new RNGCryptoServiceProvider();
var salt = new byte[16];
p.GetBytes(salt);
return salt;
}
public static byte [] GetSecureHash(string password, byte[] salt)
{
Rfc2898DeriveBytes PBKDF2 = new Rfc2898DeriveBytes(password, salt);
return PBKDF2.GetBytes(64);
}
但是,我不知道我在哪里使用这些方法,我有这个:
SqlParameter SalContraseña = new SqlParameter("@SalContraseña", SqlDbType.Binary, 16);
SalContraseña.Value = GetSalt();
cmd.Parameters.Add(SalContraseña);
SqlParameter HashContraseña = new SqlParameter("@HashContraseña",SqlDbType.Binary, 64);
HashContraseña.Value = GetSecureHash(Password,byte[]);
cmd.Parameters.Add(HashContraseña);
在这里,我将密码和哈希应用于SqlParameter
,但我不确定它是否正确,或者这是否是执行此操作的正确形式。
我以创建用户的形式应用了这些代码,然后我不知道如何应用此代码来验证带有哈希的密码,我知道我需要以用户登录的形式执行此操作。