Module bus.crypto

Class BCrypt

java.lang.Object
org.miaixz.bus.crypto.center.BCrypt

public class BCrypt extends Object
BCrypt加密算法实现。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。

此类来自于https://github.com/jeremyh/jBCrypt

使用方法如下: String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 使用checkpw方法检查被加密的字符串是否与原始字符串匹配: BCrypt.checkpw(candidate_password, stored_hash);

gensalt方法提供了可选参数 (log_rounds) 来定义加盐多少,也决定了加密的复杂度: String strong_salt = BCrypt.gensalt(10); String stronger_salt = BCrypt.gensalt(12);

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • BCrypt

      public BCrypt()
  • Method Details

    • hashpw

      public static String hashpw(String password)
      生成密文,使用长度为10的加盐方式
      Parameters:
      password - 需要加密的明文
      Returns:
      密文
    • hashpw

      public static String hashpw(String password, String salt)
      生成密文
      Parameters:
      password - 需要加密的明文
      salt - 盐,使用gensalt() 生成
      Returns:
      密文
    • gensalt

      public static String gensalt(int log_rounds, SecureRandom random)
      生成盐
      Parameters:
      log_rounds - hash中叠加的2的对数 - the work factor therefore increases as 2**log_rounds.
      random - SecureRandom
      Returns:
      an encoded salt value
    • gensalt

      public static String gensalt(int log_rounds)
      生成盐
      Parameters:
      log_rounds - the log2 of the number of rounds of hashing to apply - the work factor therefore increases as 2**log_rounds.
      Returns:
    • gensalt

      public static String gensalt()
      生成盐
      Returns:
    • checkpw

      public static boolean checkpw(String plaintext, String hashed)
      检查明文密码文本是否匹配加密后的文本
      Parameters:
      plaintext - 需要验证的明文密码
      hashed - 密文
      Returns:
      是否匹配
    • crypt

      public byte[] crypt(byte[] password, byte[] salt, int log_rounds, int[] cdata)
      加密密文
      Parameters:
      password - 明文密码
      salt - 加盐
      log_rounds - hash中叠加的对数
      cdata - 加密数据
      Returns:
      加密后的密文