类 BCrypt

java.lang.Object
cn.dev33.satoken.secure.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);

从以下版本开始:
4.1.1
作者:
Damien Miller
  • 构造器详细资料

    • BCrypt

      public BCrypt()
  • 方法详细资料

    • crypt

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

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

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

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

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

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

      public static boolean checkpw(String plaintext, String hashed)
      检查明文密码文本是否匹配加密后的文本
      参数:
      plaintext - 需要验证的明文密码
      hashed - 密文
      返回:
      是否匹配