クラス 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 booleancheckpw​(byte[] passwordb, java.lang.String hashed)
      パスワード(バイト配列として)が以前にハッシュされたものと一致することを確認します
      static booleancheckpw​(java.lang.String plaintext, java.lang.String hashed)
      平文のパスワードが以前にハッシュされたパスワードと一致することを確認します
      static java.lang.Stringgensalt()
      BCrypt.hashpw() メソッドで使用するソルトを生成し、適用するハッシュラウンド数の適切なデフォルトを選択します
      static java.lang.Stringgensalt​(int log_rounds)
      BCrypt.hashpw() メソッドで使用するソルトを生成します
      static java.lang.Stringgensalt​(int log_rounds, java.security.SecureRandom random)
      BCrypt.hashpw() メソッドで使用するソルトを生成します
      static java.lang.Stringgensalt​(java.lang.String prefix)
      static java.lang.Stringgensalt​(java.lang.String prefix, int log_rounds)
      BCrypt.hashpw() メソッドで使用するソルトを生成します
      static java.lang.Stringgensalt​(java.lang.String prefix, int log_rounds, java.security.SecureRandom random)
      BCrypt.hashpw() メソッドで使用するソルトを生成します
      static java.lang.Stringhashpw​(byte[] passwordb, java.lang.String salt)
      OpenBSD bcrypt スキームを使用してパスワードをハッシュする
      static java.lang.Stringhashpw​(java.lang.String password, java.lang.String salt)
      OpenBSD bcrypt スキームを使用してパスワードをハッシュする
      • クラス java.lang.Object から継承されたメソッド

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクターの詳細

      • BCrypt

        public 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