0

パスワードのソルト化とハッシュ化を行う方法を知りたいですか? インターネットでそれに関する多くの例を見つけましたが、まだうまくできません。

ソルトとハッシュを生成するこのコードがあります

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が、それが正しいかどうか、またはこれがこれを行うための正しい形式であるかどうかはわかりません。

これらのコードをユーザーを作成するフォームに適用しましたが、このコードを適用してハッシュでパスワードを検証する方法がわかりません。ユーザーがログインしているフォームでこれを行う必要があることはわかっています。

4

1 に答える 1

1

元のパスワード ハッシュを生成するために使用したソルトを保存する必要があります。次に、ユーザーがログインしようとすると、そのソルト値を取得し、同じハッシュ アルゴリズムを使用して入力したパスワードをハッシュし、最初に使用したのと同じソルト値を使用します。結果のハッシュが格納されたユーザーのハッシュと一致する場合、認証は成功です。

于 2014-07-23T17:03:07.810 に答える