クラス SCryptPasswordEncoder
java.lang.ObjectSE
org.springframework.security.crypto.scrypt.SCryptPasswordEncoder
- 実装されたすべてのインターフェース:
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 パスワードエンコーダーを構築します。メソッドのサマリー
修飾子と型メソッド説明static SCryptPasswordEncoder
使用すべきではありません。static SCryptPasswordEncoder
CPU コスト 65,536、メモリコスト 8、並列化 1、キー長 32、ソルト長 16 バイトの SCrypt パスワードエンコーダを構築します。encode
(CharSequenceSE rawPassword) 生のパスワードをエンコードします。boolean
matches
(CharSequenceSE rawPassword, StringSE encodedPassword) ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。boolean
upgradeEncoding
(StringSE encodedPassword) セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。
コンストラクターの詳細
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
使用すべきではありません。代わりにdefaultsForSpringSecurity_v5_8()
を使用してくださいCPU コスト 16,384、メモリコスト 8、並列化 1、キー長 32、ソルト長 64 バイトの SCrypt パスワードエンコーダを構築します。- 戻り値:
SCryptPasswordEncoder
- 導入:
- 5.8
defaultsForSpringSecurity_v5_8
CPU コスト 65,536、メモリコスト 8、並列化 1、キー長 32、ソルト長 16 バイトの SCrypt パスワードエンコーダを構築します。- 戻り値:
SCryptPasswordEncoder
- 導入:
- 5.8
encode
インターフェースからコピーされた説明:PasswordEncoder
生のパスワードをエンコードします。一般に、適切なエンコードアルゴリズムは、8 バイト以上のランダムに生成されたソルトと組み合わせた SHA-1 以上のハッシュを適用します。- 次で指定:
- インターフェース
PasswordEncoder
のencode
matches
インターフェースからコピーされた説明:PasswordEncoder
ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。パスワードが一致する場合は true を返し、一致しない場合は false を返します。保管されたパスワード自体は決してデコードされません。- 次で指定:
- インターフェース
PasswordEncoder
のmatches
- パラメーター:
rawPassword
- エンコードおよび照合する生のパスワードencodedPassword
- 比較するストレージからのエンコードされたパスワード- 戻り値:
- エンコード後の生のパスワードがストレージからのエンコードされたパスワードと一致する場合は true
upgradeEncoding
インターフェースからコピーされた説明:PasswordEncoder
セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。デフォルトの実装は常に false を返します。- 次で指定:
- インターフェース
PasswordEncoder
のupgradeEncoding
- パラメーター:
encodedPassword
- チェックするエンコードされたパスワード- 戻り値:
- セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true、そうでない場合は false。
defaultsForSpringSecurity_v5_8()
を使用してください