クラス SCryptPasswordEncoder

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

    public class SCryptPasswordEncoder
    extends java.lang.Object
    implements PasswordEncoder

    SCrypt ハッシュ関数を使用する PasswordEncoder の実装。クライアントはオプションで、CPU コストパラメーター、メモリコストパラメーター、並列化パラメーターを提供できます。

    いくつかの警告 :

    • 現在の実装では、パスワードクラッカーが行う並列処理 / 最適化を利用しない Bouncy Castle を使用しているため、攻撃者と防御者の間に不必要な非対称性があります。
    • Scrypt は、Salsa20 をベースにしており、Java では(AES と同等)パフォーマンスは低くなりますが、SIMD 対応プラットフォームでは(4-5 倍程度高速)素晴らしいパフォーマンスを発揮します
    • 同意しないものもありますが、読むことを検討してください -Scrypt を推奨しない理由 (パスワード保存用)
    • コンストラクターの概要

      コンストラクター  
      コンストラクター 説明
      SCryptPasswordEncoder()
      使用すべきではありません。
      代わりに defaultsForSpringSecurity_v4_1() を使用してください
      SCryptPasswordEncoder​(int cpuCost, int memoryCost, int parallelization, int keyLength, int saltLength)
      指定されたパラメーターを使用して SCrypt パスワードエンコーダーを構築します。
    • メソッドのサマリー

      すべてのメソッド   静的メソッド   インスタンスメソッド   具象メソッド   非推奨のメソッド  
      修飾子と型 メソッド 説明
      static SCryptPasswordEncoderdefaultsForSpringSecurity_v4_1()
      使用すべきではありません。
      代わりに defaultsForSpringSecurity_v5_8() を使用してください
      static SCryptPasswordEncoderdefaultsForSpringSecurity_v5_8()
      CPU コスト 65,536、メモリコスト 8、並列化 1、キー長 32、ソルト長 16 バイトの SCrypt パスワードエンコーダを構築します。
      java.lang.Stringencode​(java.lang.CharSequence rawPassword)
      生のパスワードをエンコードします。
      booleanmatches​(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)
      ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。
      booleanupgradeEncoding​(java.lang.String encodedPassword)
      セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。
      • クラス java.lang.Object から継承されたメソッド

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

      • SCryptPasswordEncoder

        @Deprecated
        public SCryptPasswordEncoder()
        使用すべきではありません。
        代わりに defaultsForSpringSecurity_v4_1() を使用してください
        CPU コスト 16,384、メモリコスト 8、並列化 1、キー長 32、ソルト長 64 バイトの SCrypt パスワードエンコーダを構築します。
      • SCryptPasswordEncoder

        public SCryptPasswordEncoder​(int cpuCost,
                                     int memoryCost,
                                     int parallelization,
                                     int keyLength,
                                     int saltLength)
        指定されたパラメーターを使用して SCrypt パスワードエンコーダーを構築します。
        パラメーター:
        cpuCost - アルゴリズムの CPU コスト (scrypt で定義されているように、これは N です)。1 より大きい 2 の累乗でなければなりません。現在のデフォルトは 65,536 または 2^16 です)
        memoryCost - アルゴリズムのメモリコスト(scrypt で定義されているとおり、これは r)デフォルトは現在 8 です。
        parallelization - アルゴリズムの並列化(scrypt で定義されているように、これは p)デフォルトは現在 1 です。実装は現在並列化を利用していません。
        keyLength - アルゴリズムのキーの長さ (scrypt で定義されているように、これは dkLen です)。デフォルトは現在 32 です。
        saltLength - ソルトの長さ (scrypt で定義されているように、これは S の長さです)。現在のデフォルトは 16 です。
    • メソッドの詳細

      • defaultsForSpringSecurity_v4_1

        @Deprecated
        public static SCryptPasswordEncoder defaultsForSpringSecurity_v4_1()
        使用すべきではありません。
        代わりに defaultsForSpringSecurity_v5_8() を使用してください
        CPU コスト 16,384、メモリコスト 8、並列化 1、キー長 32、ソルト長 64 バイトの SCrypt パスワードエンコーダを構築します。
        戻り値:
        SCryptPasswordEncoder
        導入:
        5.8
      • defaultsForSpringSecurity_v5_8

        public static SCryptPasswordEncoder defaultsForSpringSecurity_v5_8()
        CPU コスト 65,536、メモリコスト 8、並列化 1、キー長 32、ソルト長 16 バイトの SCrypt パスワードエンコーダを構築します。
        戻り値:
        SCryptPasswordEncoder
        導入:
        5.8
      • encode

        public java.lang.String encode​(java.lang.CharSequence rawPassword)
        インターフェースからコピーされた説明: PasswordEncoder
        生のパスワードをエンコードします。一般に、適切なエンコードアルゴリズムは、8 バイト以上のランダムに生成されたソルトと組み合わせた SHA-1 以上のハッシュを適用します。
        次で指定:
        インターフェース PasswordEncoderencode 
      • matches

        public boolean matches​(java.lang.CharSequence rawPassword,
                               java.lang.String encodedPassword)
        インターフェースからコピーされた説明: PasswordEncoder
        ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。パスワードが一致する場合は true を返し、一致しない場合は false を返します。保管されたパスワード自体は決してデコードされません。
        次で指定:
        インターフェース PasswordEncodermatches 
        パラメーター:
        rawPassword - エンコードおよび照合する生のパスワード
        encodedPassword - 比較するストレージからのエンコードされたパスワード
        戻り値:
        エンコード後の生のパスワードがストレージからのエンコードされたパスワードと一致する場合は true
      • upgradeEncoding

        public boolean upgradeEncoding​(java.lang.String encodedPassword)
        インターフェースからコピーされた説明: PasswordEncoder
        セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。デフォルトの実装は常に false を返します。
        次で指定:
        インターフェース PasswordEncoderupgradeEncoding 
        パラメーター:
        encodedPassword - チェックするエンコードされたパスワード
        戻り値:
        セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true、そうでない場合は false。