クラス 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()
SCryptPasswordEncoder(int cpuCost, int memoryCost, int parallelization, int keyLength, int saltLength)
新しいインスタンスを作成します
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 java.lang.String
encode(java.lang.CharSequence rawPassword)
生のパスワードをエンコードします。boolean
matches(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)
ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。boolean
upgradeEncoding(java.lang.String encodedPassword)
セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。
コンストラクターの詳細
SCryptPasswordEncoder
public SCryptPasswordEncoder()
SCryptPasswordEncoder
public SCryptPasswordEncoder(int cpuCost, int memoryCost, int parallelization, int keyLength, int saltLength)
新しいインスタンスを作成します- パラメーター:
cpuCost
- アルゴリズムの CPU コスト(scrypt で定義されているように、これは N です)。1 より大きい 2 の累乗でなければなりません。デフォルトは現在 16,384 または 2 ^ 14 です)memoryCost
- アルゴリズムのメモリコスト(scrypt で定義されているとおり、これは r)デフォルトは現在 8 です。parallelization
- アルゴリズムの並列化(scrypt で定義されているように、これは p)デフォルトは現在 1 です。実装は現在並列化を利用していません。keyLength
- アルゴリズムのキーの長さ (scrypt で定義されているように、これは dkLen です)。デフォルトは現在 32 です。saltLength
- ソルトの長さ(scrypt で定義されているように、これは S の長さです)。デフォルトは現在 64 です。
メソッドの詳細
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。