2

Spring セキュリティ 3.1.1.RELEASE を使用しています。StandardPasswordEncoder.encode(password) 関数を使用してユーザー パスワードを暗号化していますが、これは生成されるランダム ソルトに依存しています。Spring セキュリティ ソースから、最終的にこのメソッドはソルト生成のために「org.springframework.security.crypto.keygen.SecureRandomBytesKeyGenerator」から呼び出されます…</p>

public byte[] generateKey() {
    byte[] bytes = new byte[keyLength];
    random.nextBytes(bytes);
    return bytes;
}

私の質問は、パスワードがログイン ページから入力されると、エンコードされたパスワードの比較に使用される同じソルトがどのように生成されるのかということです。上記はランダムのように見えるので、比較が行われると新しいランダムソルトが作成されると思います。

4

2 に答える 2

2

ソルトは、ハッシュされたパスワードとともにデータベースに保存されます。ユーザーが再度ログインすると、データベースからソルトが抽出され、パスワードでハッシュされ、データベース内のパスワード ハッシュと比較されます。それらが一致する場合、パスワードは正しいです。

ソルトキーはハッシュを変更するため、ソルト値は同じパスワードを持つ人々をデータベースで目立たなくするだけです. また、キーによってパスワードが長くなるため、ハッシュの総当たり攻撃が難しくなります。ハッシュ化されたパスワードがブルート フォースによって発見された場合でも、実際のパスワードを知るためにそのハッシュからキーを削除する必要があるため、ハッシュからパスワードをリバース エンジニアリングすることが難しくなります。

于 2012-12-11T12:45:44.940 に答える
1

いいえ。Spring Security をソルト付きハッシュ パスワード用に構成した場合、比較すると、ユーザー データ ルックアップが呼び出されます。ユーザー レコードがユーザー名で見つかると、ソルトがパスワード フィールドから抽出され、ページからパスワードのハッシュを計算するために使用されます。そして、ハッシュが比較されます。

于 2012-12-11T12:32:42.320 に答える