クラス BCrypt
java.lang.ObjectSE
org.springframework.security.crypto.bcrypt.BCrypt
BCrypt は、Niels Provos と David Mazieres による "A Future-Adaptable Password Scheme" で説明されているスキームを使用して、OpenBSD スタイルの Blowfish パスワードハッシュを実装しています。
このパスワードハッシュシステムは、Bruce Schneier の Blowfish 暗号に基づく、計算集約型のハッシュアルゴリズムを使用して、オフラインのパスワードクラッキングを阻止しようとします。アルゴリズムの作業係数はパラメーター化されているため、コンピューターが高速になるにつれて増加する可能性があります。
使い方は本当に簡単です。初めてパスワードをハッシュするには、次のように、ランダムなソルトを使用して hashpw メソッドを呼び出します。
String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt());
平文パスワードが以前にハッシュされたものと一致するかどうかを確認するには、checkpw メソッドを使用します。
if (BCrypt.checkpw(candidate_password, stored_hash))
System.out.println("It matches");
else
System.out.println("It does not match");
gensalt() メソッドは、ハッシュの計算の複雑さを決定するオプションのパラメーター(log_rounds)を取ります。
String strong_salt = BCrypt.gensalt(10)
String stronger_salt = BCrypt.gensalt(12)
作業量は指数関数的に増加するため(2 ** log_rounds)、各増分は作業量の 2 倍になります。デフォルトの log_rounds は 10 で、有効範囲は 4 〜 31 です。
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明static boolean
パスワード(バイト配列として)が以前にハッシュされたものと一致することを確認しますstatic boolean
平文のパスワードが以前にハッシュされたパスワードと一致することを確認しますstatic StringSE
gensalt()
BCrypt.hashpw() メソッドで使用するソルトを生成し、適用するハッシュラウンド数の適切なデフォルトを選択しますstatic StringSE
gensalt
(int log_rounds) BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic StringSE
gensalt
(int log_rounds, SecureRandomSE random) BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic StringSE
static StringSE
BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic StringSE
gensalt
(StringSE prefix, int log_rounds, SecureRandomSE random) BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic StringSE
OpenBSD bcrypt スキームを使用してパスワードをハッシュするstatic StringSE
OpenBSD bcrypt スキームを使用してパスワードをハッシュする
コンストラクターの詳細
BCrypt
public BCrypt()
メソッドの詳細
hashpw
OpenBSD bcrypt スキームを使用してパスワードをハッシュする- パラメーター:
password
- ハッシュするパスワードsalt
- ハッシュするソルト (おそらく BCrypt.gensalt を使用して生成)- 戻り値:
- ハッシュされたパスワード
hashpw
OpenBSD bcrypt スキームを使用してパスワードをハッシュする- パラメーター:
passwordb
- バイト配列としてハッシュするパスワードsalt
- ハッシュするソルト (おそらく BCrypt.gensalt を使用して生成)- 戻り値:
- ハッシュされたパスワード
gensalt
public static StringSE gensalt(StringSE prefix, int log_rounds, SecureRandomSE random) throws IllegalArgumentExceptionSE BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
prefix
- プレフィックス値 (デフォルト $2a)log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。random
- 使用する SecureRandom のインスタンス- 戻り値:
- エンコードされたソルト値
- 例外:
IllegalArgumentExceptionSE
- プレフィックスまたは log_rounds が無効な場合
gensalt
BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
prefix
- プレフィックス値 (デフォルト $2a)log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。- 戻り値:
- エンコードされたソルト値
- 例外:
IllegalArgumentExceptionSE
- プレフィックスまたは log_rounds が無効な場合
gensalt
public static StringSE gensalt(int log_rounds, SecureRandomSE random) throws IllegalArgumentExceptionSE BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。random
- 使用する SecureRandom のインスタンス- 戻り値:
- エンコードされたソルト値
- 例外:
IllegalArgumentExceptionSE
- log_rounds が無効な場合
gensalt
BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。- 戻り値:
- エンコードされたソルト値
- 例外:
IllegalArgumentExceptionSE
- log_rounds が無効な場合
gensalt
gensalt
BCrypt.hashpw() メソッドで使用するソルトを生成し、適用するハッシュラウンド数の適切なデフォルトを選択します- 戻り値:
- エンコードされたソルト値
checkpw
平文のパスワードが以前にハッシュされたパスワードと一致することを確認します- パラメーター:
plaintext
- 確認するプレーンテキストのパスワードhashed
- 以前にハッシュされたパスワード- 戻り値:
- パスワードが一致する場合は true、そうでない場合は false
checkpw
パスワード(バイト配列として)が以前にハッシュされたものと一致することを確認します- パラメーター:
passwordb
- バイト配列として検証するパスワードhashed
- 以前にハッシュされたパスワード- 戻り値:
- パスワードが一致する場合は true、そうでない場合は false
- 導入:
- 5.3