クラス SCryptPasswordEncoder
- java.lang.Object
-
- org.springframework.security.crypto.scrypt.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 を返します。
コンストラクターの詳細
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 以上のハッシュを適用します。- 次で指定:
- インターフェース
PasswordEncoderのencode
matches
public boolean matches(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)インターフェースからコピーされた説明:PasswordEncoderストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。パスワードが一致する場合は true を返し、一致しない場合は false を返します。保管されたパスワード自体は決してデコードされません。- 次で指定:
- インターフェース
PasswordEncoderのmatches - パラメーター:
rawPassword- エンコードおよび照合する生のパスワードencodedPassword- 比較するストレージからのエンコードされたパスワード- 戻り値:
- エンコード後の生のパスワードがストレージからのエンコードされたパスワードと一致する場合は true
upgradeEncoding
public boolean upgradeEncoding(java.lang.String encodedPassword)
インターフェースからコピーされた説明:PasswordEncoderセキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。デフォルトの実装は常に false を返します。- 次で指定:
- インターフェース
PasswordEncoderのupgradeEncoding - パラメーター:
encodedPassword- チェックするエンコードされたパスワード- 戻り値:
- セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true、そうでない場合は false。