クラス MessageDigestPasswordEncoder
- java.lang.Object
-
- org.springframework.security.crypto.password.MessageDigestPasswordEncoder
- 実装されたすべてのインターフェース:
PasswordEncoder
@Deprecated public class MessageDigestPasswordEncoder extends java.lang.Object implements PasswordEncoder
使用すべきではありません。ダイジェストベースのパスワードエンコーディングは安全とは見なされません。代わりに、BCryptPasswordEncoder、Pbkdf2PasswordEncoder、SCryptPasswordEncoder などの適応型一方向関数を使用してください。パスワードのアップグレードをサポートするDelegatingPasswordEncoder
を使用することをお勧めします。このサポートを削除する予定はありません。これはレガシー実装であり、それを使用することは安全でないと見なされることを示すために非推奨です。このPasswordEncoder
はレガシー目的でのみ提供されており、安全とは見なされていません。渡されたMessageDigest
を使用してパスワードをエンコードします。パスワードの一般的な形式は次のとおりです。s = salt == null ? "" : "{" + salt + "}" s + digest(password + s)
"salt" はソルト、digest はダイジェスト方式、password は実際のパスワードです。たとえば、MD5、"password" のパスワード、"thisissalt" のソルトを使用する場合:String s = salt == null ? "" : "{" + salt + "}"; s + md5(password + s) "{thisissalt}" + md5(password + "{thisissalt}") "{thisissalt}2a4e7104c2780098f50ed5a84bb2323d"
ソルトが存在しない場合は、次のように "{salt}" を省略します。digest(password)
ソルトが空の文字列の場合は、次のように "{}" のみを使用します。"{}" + digest(password + "{}")
このフォーマットは、Spring Security コアモジュールで見つかった DigestPasswordEncoder で動作することを目的としています。ただし、この API はソルトを内部的に提供するのでなく、ユーザーの責任にするため、パスワードにソルトを含めてパスワードを移行する必要があります。SaltSource からパスワードを移行するには、以下を使用します。String salt = saltSource.getSalt(user); String s = salt == null ? null : "{" + salt + "}"; String migratedPassword = s + user.getPassword();
- 導入:
- 5.0
コンストラクターのサマリー
コンストラクター コンストラクター 説明 MessageDigestPasswordEncoder(java.lang.String algorithm)
使用すべきではありません。使用するダイジェストアルゴリズムは、Java 環境で名前付きメッセージダイジェストアルゴリズムをサポートします。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 java.lang.String
encode(java.lang.CharSequence rawPassword)
使用すべきではありません。MessageDigest を使用して rawPass をエンコードします。boolean
matches(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)
使用すべきではありません。以前にエンコードされたパスワードを取得し、ソルトを混合してその値をエンコードした後、それを rawpassword と比較しますvoid
setEncodeHashAsBase64(boolean encodeHashAsBase64)
使用すべきではありません。void
setIterations(int iterations)
使用すべきではありません。計算されたハッシュ値を「ストレッチ」する反復回数を設定します。クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インターフェース org.springframework.security.crypto.password.PasswordEncoder から継承されたメソッド
upgradeEncoding
コンストラクターの詳細
MessageDigestPasswordEncoder
public MessageDigestPasswordEncoder(java.lang.String algorithm)
使用すべきではありません。使用するダイジェストアルゴリズムは、Java 環境で名前付きメッセージダイジェストアルゴリズムをサポートします。- パラメーター:
algorithm
-
メソッドの詳細
setEncodeHashAsBase64
public void setEncodeHashAsBase64(boolean encodeHashAsBase64)
使用すべきではありません。
encode
public java.lang.String encode(java.lang.CharSequence rawPassword)
使用すべきではありません。MessageDigest を使用して rawPass をエンコードします。ソルトが指定されている場合は、エンコード前にパスワードと結合されます。- 次で指定:
- インターフェース
PasswordEncoder
のencode
- パラメーター:
rawPassword
- プレーンテキストのパスワード- 戻り値:
- パスワードダイジェストの 16 進文字列(または encodeHashAsBase64 が有効な場合は base64 エンコード文字列)。
matches
public boolean matches(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)
使用すべきではありません。以前にエンコードされたパスワードを取得し、ソルトを混合してその値をエンコードした後、それを rawpassword と比較します- 次で指定:
- インターフェース
PasswordEncoder
のmatches
- パラメーター:
rawPassword
- プレーンテキストのパスワードencodedPassword
- 以前にエンコードされたパスワード- 戻り値:
- 正しいか間違っているか
setIterations
public void setIterations(int iterations)
使用すべきではありません。計算されたハッシュ値を「ストレッチ」する反復回数を設定します。これが 1 より大きい場合、初期ダイジェストが計算され、追加の反復回数の結果に対してダイジェスト関数が繰り返し呼び出されます。- パラメーター:
iterations
- ハッシュされたパスワード / ソルトの値で実行される反復の数。デフォルトは 1 です。