public class BCrypt
extends java.lang.Objectこのパスワードハッシュシステムは、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 スキームを使用してパスワードをハッシュする |
public static java.lang.String hashpw(java.lang.String password,
java.lang.String salt)password - ハッシュするパスワード salt - ハッシュするソルト (おそらく BCrypt.gensalt を使用して生成)public static java.lang.String hashpw(byte[] passwordb,
java.lang.String salt)passwordb - バイト配列としてハッシュするパスワード salt - ハッシュするソルト (おそらく BCrypt.gensalt を使用して生成)public static java.lang.String gensalt(java.lang.String prefix,
int log_rounds,
java.security.SecureRandom random)
throws java.lang.IllegalArgumentExceptionprefix - プレフィックス値 (デフォルト $2a)log_rounds - 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。random - 使用する SecureRandom のインスタンス java.lang.IllegalArgumentException - プレフィックスまたは log_rounds が無効な場合 public static java.lang.String gensalt(java.lang.String prefix,
int log_rounds)
throws java.lang.IllegalArgumentExceptionprefix - プレフィックス値 (デフォルト $2a)log_rounds - 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。java.lang.IllegalArgumentException - プレフィックスまたは log_rounds が無効な場合 public static java.lang.String gensalt(int log_rounds,
java.security.SecureRandom random)
throws java.lang.IllegalArgumentExceptionlog_rounds - 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。random - 使用する SecureRandom のインスタンス java.lang.IllegalArgumentException - log_rounds が無効な場合 public static java.lang.String gensalt(int log_rounds)
throws java.lang.IllegalArgumentExceptionlog_rounds - 適用するハッシュのラウンド数の log2 - 作業係数は 2 ** log_rounds として増加します。java.lang.IllegalArgumentException - log_rounds が無効な場合 public static java.lang.String gensalt(java.lang.String prefix)
public static java.lang.String gensalt()
public static boolean checkpw(java.lang.String plaintext,
java.lang.String hashed)plaintext - 確認するプレーンテキストのパスワード hashed - 以前にハッシュされたパスワード public static boolean checkpw(byte[] passwordb,
java.lang.String hashed)passwordb - バイト配列として検証するパスワード hashed - 以前にハッシュされたパスワード