クラス BCrypt
- java.lang.Object
-
- org.springframework.security.crypto.bcrypt.BCrypt
public class BCrypt extends java.lang.Object
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 です。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 BCrypt()
メソッドのサマリー
すべてのメソッド 静的メソッド 具象メソッド 修飾子と型 メソッド 説明 static boolean
checkpw(byte[] passwordb, java.lang.String hashed)
パスワード(バイト配列として)が以前にハッシュされたものと一致することを確認しますstatic boolean
checkpw(java.lang.String plaintext, java.lang.String hashed)
平文のパスワードが以前にハッシュされたパスワードと一致することを確認しますstatic java.lang.String
gensalt()
BCrypt.hashpw() メソッドで使用するソルトを生成し、適用するハッシュラウンド数の適切なデフォルトを選択しますstatic java.lang.String
gensalt(int log_rounds)
BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic java.lang.String
gensalt(int log_rounds, java.security.SecureRandom random)
BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic java.lang.String
gensalt(java.lang.String prefix)
static java.lang.String
gensalt(java.lang.String prefix, int log_rounds)
BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic java.lang.String
gensalt(java.lang.String prefix, int log_rounds, java.security.SecureRandom random)
BCrypt.hashpw() メソッドで使用するソルトを生成しますstatic java.lang.String
hashpw(byte[] passwordb, java.lang.String salt)
OpenBSD bcrypt スキームを使用してパスワードをハッシュするstatic java.lang.String
hashpw(java.lang.String password, java.lang.String salt)
OpenBSD bcrypt スキームを使用してパスワードをハッシュする
メソッドの詳細
hashpw
public static java.lang.String hashpw(java.lang.String password, java.lang.String salt)
OpenBSD bcrypt スキームを使用してパスワードをハッシュする- パラメーター:
password
- ハッシュするパスワードsalt
- ハッシュするソルト (おそらく BCrypt.gensalt を使用して生成)- 戻り値:
- ハッシュされたパスワード
hashpw
public static java.lang.String hashpw(byte[] passwordb, java.lang.String salt)
OpenBSD bcrypt スキームを使用してパスワードをハッシュする- パラメーター:
passwordb
- バイト配列としてハッシュするパスワードsalt
- ハッシュするソルト (おそらく BCrypt.gensalt を使用して生成)- 戻り値:
- ハッシュされたパスワード
gensalt
public static java.lang.String gensalt(java.lang.String prefix, int log_rounds, java.security.SecureRandom random) throws java.lang.IllegalArgumentException
BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
prefix
- プレフィックス値 (デフォルト $2a)log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。random
- 使用する SecureRandom のインスタンス- 戻り値:
- エンコードされたソルト値
- 例外:
java.lang.IllegalArgumentException
- プレフィックスまたは log_rounds が無効な場合
gensalt
public static java.lang.String gensalt(java.lang.String prefix, int log_rounds) throws java.lang.IllegalArgumentException
BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
prefix
- プレフィックス値 (デフォルト $2a)log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。- 戻り値:
- エンコードされたソルト値
- 例外:
java.lang.IllegalArgumentException
- プレフィックスまたは log_rounds が無効な場合
gensalt
public static java.lang.String gensalt(int log_rounds, java.security.SecureRandom random) throws java.lang.IllegalArgumentException
BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。random
- 使用する SecureRandom のインスタンス- 戻り値:
- エンコードされたソルト値
- 例外:
java.lang.IllegalArgumentException
- log_rounds が無効な場合
gensalt
public static java.lang.String gensalt(int log_rounds) throws java.lang.IllegalArgumentException
BCrypt.hashpw() メソッドで使用するソルトを生成します- パラメーター:
log_rounds
- 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。- 戻り値:
- エンコードされたソルト値
- 例外:
java.lang.IllegalArgumentException
- log_rounds が無効な場合
gensalt
public static java.lang.String gensalt(java.lang.String prefix)
gensalt
public static java.lang.String gensalt()
BCrypt.hashpw() メソッドで使用するソルトを生成し、適用するハッシュラウンド数の適切なデフォルトを選択します- 戻り値:
- エンコードされたソルト値
checkpw
public static boolean checkpw(java.lang.String plaintext, java.lang.String hashed)
平文のパスワードが以前にハッシュされたパスワードと一致することを確認します- パラメーター:
plaintext
- 確認するプレーンテキストのパスワードhashed
- 以前にハッシュされたパスワード- 戻り値:
- パスワードが一致する場合は true、そうでない場合は false
checkpw
public static boolean checkpw(byte[] passwordb, java.lang.String hashed)
パスワード(バイト配列として)が以前にハッシュされたものと一致することを確認します- パラメーター:
passwordb
- バイト配列として検証するパスワードhashed
- 以前にハッシュされたパスワード- 戻り値:
- パスワードが一致する場合は true、そうでない場合は false
- 導入:
- 5.3