35.4 Password Encoding

2390 ワード

Spring-security-cryptモジュールのパスワードパッケージは、パスワードの符号化をサポートします.PasswordEncoderは中央サービスインタフェースであり、以下の署名を有する.
1 public interface PasswordEncoder {
2 
3 String encode(String rawPassword);
4 
5 boolean matches(String rawPassword, String encodedPassword);
6 }

元のパスワードが符号化されて符号化パスワードに等しい場合、matchesメソッドはtrueを返します.この方法は、パスワードベースの認証スキームをサポートすることを目的としています.
BCryptPasswordEncoder実装では、広くサポートされている「bcrypt」アルゴリズムを使用してパスワードをハッシュします.暗号化はランダムな16バイトの塩値を用い,暗号解読を阻止するために故意に遅いアルゴリズムである.作業量は、4~31の範囲の値をとる「強度」パラメータを使用して調整できます.この値が高いほど、ハッシュの計算に必要な作業が多くなります.既定値は10です.既存のパスワードに影響を与えることなく、配備されたシステムで値を変更できます.この値は符号化されたハッシュにも格納されます.
1 // Create an encoder with strength 16
2 BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(16);
3 String result = encoder.encode("myPassword");
4 assertTrue(encoder.matches("myPassword", result));

Pbkdf 2 PasswordEncoderは,PBKDF 2アルゴリズムを用いたパスワードのハッシュ処理を実現する.暗号解読を破るために、PBKDF 2は故意に遅いアルゴリズムで、システム上の暗号を検証するのに約0.5秒かかるように調整する必要があります.
1 // Create an encoder with all the defaults
2 Pbkdf2PasswordEncoder encoder = new Pbkdf2PasswordEncoder();
3 String result = encoder.encode("myPassword");
4 assertTrue(encoder.matches("myPassword", result));