クラス MessageDigestPasswordEncoder

java.lang.ObjectSE
org.springframework.security.crypto.password.MessageDigestPasswordEncoder
実装されたすべてのインターフェース:
PasswordEncoder

@DeprecatedSE public class MessageDigestPasswordEncoder extends ObjectSE implements PasswordEncoder
使用すべきではありません。
ダイジェストベースのパスワードエンコーディングは安全とは見なされません。代わりに、BCryptPasswordEncoder、Pbkdf2PasswordEncoder、SCryptPasswordEncoder などの適応型一方向関数を使用してください。パスワードのアップグレードをサポートする DelegatingPasswordEncoder を使用することをお勧めします。このサポートを削除する予定はありません。これはレガシー実装であり、それを使用することは安全でないと見なされることを示すために非推奨です。
この PasswordEncoder はレガシー目的でのみ提供されており、安全とは見なされません。渡された MessageDigestSE を使用してパスワードをエンコードします。パスワードの一般的な形式は次のとおりです。
 s = salt == null ? "" : "{" + salt + "}"
 s + digest(password + s)
 
"salt" はソルト、digest はダイジェスト方式、password は実際のパスワードです。たとえば、MD5、"password" のパスワード、"thisissalt" のソルトを使用する場合:
 String s = salt == null ? "" : "{" + salt + "}";
 s + md5(password + s)
 "{thisissalt}" + md5(password + "{thisissalt}")
 "{thisissalt}2a4e7104c2780098f50ed5a84bb2323d"
 
ソルトが存在しない場合は、次のように "{salt}" を省略します。
 digest(password)
 
ソルトが空の文字列の場合は、次のように "{}" のみを使用します。
 "{}" + digest(password + "{}")
 
このフォーマットは、Spring Security コアモジュールで見つかった DigestPasswordEncoder で動作することを目的としています。ただし、この API はソルトを内部的に提供するのでなく、ユーザーの責任にするため、パスワードにソルトを含めてパスワードを移行する必要があります。SaltSource からパスワードを移行するには、以下を使用します。
 String salt = saltSource.getSalt(user);
 String s = salt == null ? null : "{" + salt + "}";
 String migratedPassword = s + user.getPassword();
 
導入:
5.0
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
    使用すべきではありません。
    使用するダイジェストアルゴリズムは、Java 環境で名前付きメッセージダイジェストアルゴリズムをサポートします。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    encode(CharSequenceSE rawPassword)
    使用すべきではありません。
    MessageDigest を使用して rawPass をエンコードします。
    boolean
    matches(CharSequenceSE rawPassword, StringSE encodedPassword)
    使用すべきではありません。
    以前にエンコードされたパスワードを取得し、ソルトを混合してその値をエンコードした後、それを rawpassword と比較します
    void
    setEncodeHashAsBase64(boolean encodeHashAsBase64)
    使用すべきではありません。
    void
    setIterations(int iterations)
    使用すべきではありません。
    計算されたハッシュ値を「ストレッチ」する反復回数を設定します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE

    インターフェース org.springframework.security.crypto.password.PasswordEncoder から継承されたメソッド

    upgradeEncoding
  • コンストラクターの詳細

    • MessageDigestPasswordEncoder

      public MessageDigestPasswordEncoder(StringSE algorithm)
      使用すべきではありません。
      使用するダイジェストアルゴリズムは、Java 環境で名前付きメッセージダイジェストアルゴリズムをサポートします。
      パラメーター:
      algorithm -
  • メソッドの詳細

    • setEncodeHashAsBase64

      public void setEncodeHashAsBase64(boolean encodeHashAsBase64)
      使用すべきではありません。
    • encode

      public StringSE encode(CharSequenceSE rawPassword)
      使用すべきではありません。
      MessageDigest を使用して rawPass をエンコードします。salt が指定されている場合、エンコードの前にパスワードとマージされます。
      次で指定:
      インターフェース PasswordEncoderencode 
      パラメーター:
      rawPassword - プレーンテキストのパスワード
      戻り値:
      パスワードダイジェストの 16 進文字列(または encodeHashAsBase64 が有効な場合は base64 エンコード文字列)。
    • matches

      public boolean matches(CharSequenceSE rawPassword, StringSE encodedPassword)
      使用すべきではありません。
      以前にエンコードされたパスワードを取得し、ソルトを混合してその値をエンコードした後、それを rawpassword と比較します
      次で指定:
      インターフェース PasswordEncodermatches 
      パラメーター:
      rawPassword - プレーンテキストのパスワード
      encodedPassword - 以前にエンコードされたパスワード
      戻り値:
      正しいか間違っているか
    • setIterations

      public void setIterations(int iterations)
      使用すべきではありません。
      計算されたハッシュ値を「ストレッチ」する反復回数を設定します。これが 1 より大きい場合、初期ダイジェストが計算され、追加の反復回数の結果に対してダイジェスト関数が繰り返し呼び出されます。
      パラメーター:
      iterations - ハッシュされたパスワード / ソルトの値で実行される反復の数。デフォルトは 1 です。