クラス SCryptPasswordEncoder

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

public class SCryptPasswordEncoder extends ObjectSE implements PasswordEncoder

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

いくつかの警告 :

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

    コンストラクター
    コンストラクター
    説明
    SCryptPasswordEncoder(int cpuCost, int memoryCost, int parallelization, int keyLength, int saltLength)
    指定されたパラメーターを使用して SCrypt パスワードエンコーダーを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    使用すべきではありません。
    代わりに defaultsForSpringSecurity_v5_8() を使用してください
    CPU コスト 65,536、メモリコスト 8、並列化 1、キー長 32、ソルト長 16 バイトの SCrypt パスワードエンコーダを構築します。
    encode(CharSequenceSE rawPassword)
    生のパスワードをエンコードします。
    boolean
    matches(CharSequenceSE rawPassword, StringSE encodedPassword)
    ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。
    boolean
    upgradeEncoding(StringSE encodedPassword)
    セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。

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

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

    • 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

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

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

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