クラス MessageDigestPasswordEncoder

  • 実装されたすべてのインターフェース:
    PasswordEncoder

    @Deprecated
    public class MessageDigestPasswordEncoder
    extends java.lang.Object
    implements PasswordEncoder
    使用すべきではありません。
    ダイジェストベースのパスワードエンコーディングは安全とは見なされません。代わりに、BCryptPasswordEncoder、Pbkdf2PasswordEncoder、SCryptPasswordEncoder などの適応型一方向関数を使用してください。パスワードのアップグレードをサポートする DelegatingPasswordEncoder を使用することをお勧めします。このサポートを削除する予定はありません。これはレガシー実装であり、それを使用することは安全でないと見なされることを示すために非推奨です。
    この PasswordEncoder はレガシー目的でのみ提供されており、安全とは見なされていません。渡された MessageDigest を使用してパスワードをエンコードします。パスワードの一般的な形式は次のとおりです。
     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.lang.Stringencode​(java.lang.CharSequence rawPassword)
      使用すべきではありません。
      MessageDigest を使用して rawPass をエンコードします。
      booleanmatches​(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)
      使用すべきではありません。
      以前にエンコードされたパスワードを取得し、ソルトを混合してその値をエンコードした後、それを rawpassword と比較します
      voidsetEncodeHashAsBase64​(boolean encodeHashAsBase64)
      使用すべきではありません。
      voidsetIterations​(int iterations)
      使用すべきではありません。
      計算されたハッシュ値を「ストレッチ」する反復回数を設定します。
      • クラス java.lang.Object から継承されたメソッド

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクターの詳細

      • MessageDigestPasswordEncoder

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

      • setEncodeHashAsBase64

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

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

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

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