Class BCrypt

java.lang.Object
org.aoju.bus.crypto.digest.BCrypt

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

    • BCrypt

      public BCrypt()
  • Method Details

    • hashpw

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

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

      public String gensalt()
      生成一个salt以与BCrypt.hashpw()方法一起使用, 为要应用的散列轮数选择一个合理的默认值
      Returns:
      一个编码的盐值
    • gensalt

      public String gensalt(int log_rounds)
      生成用于BCrypt.hashpw()方法的salt
      Parameters:
      log_rounds - 要应用的散列的轮数的log2 —— 因此工作因子增加为 2**log_rounds
      Returns:
      一个编码的盐值
      Throws:
      IllegalArgumentException - 如果前缀或log_rounds无效
    • gensalt

      public String gensalt(int log_rounds, SecureRandom random)
      生成用于BCrypt.hashpw()方法的salt
      Parameters:
      log_rounds - 要应用的散列的轮数的log2 —— 因此工作因子增加为 2**log_rounds
      random - 要使用的SecureRandom实例
      Returns:
      一个编码的盐值
      Throws:
      IllegalArgumentException - 如果前缀或log_rounds无效
    • checkpw

      public 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:
      加密后的密文