我正在尝试将JBCrypt用于Java应用程序的登录系统。该Web应用程序利用带有默认参数的内置password_hash函数。似乎COST设置为10,并且盐的长度现在大于使用JBCrypt类实现的标准16。当我执行下面的测试代码时,JBCrypt会抛出无效的长度超过16位数字的盐。由于这对我来说是新事物,并且希望我不必接触这个类就可以解决这个问题,我相对迷失了方向,并且找不到合适的文档,因为该项目似乎已经过时了。我可以指出用于修改此类的任何帮助/文档或Java的替代方法。此示例使用的盐长为22。
String hash_php = "$2y$10$ss9kwE8iSIqcJOAPhZR0Y.2XdYXJTFJ1/wGq6SUv74vULE7uhKUIO".replaceFirst("2y", "2a");
System.out.println("hash php " + hash_php);
//String a_hash = BCrypt.hashpw("123456", BCrypt.gensalt());
//System.out.println("Encrypt " + a_hash);
if (BCrypt.checkpw("123456", hash_php)) {
System.out.println("It matches");
} else {
System.out.println("It does not match");
}
默认BCrypt类(链接到字符限制):Bcrypt class
发生错误:
if (salt.length != BCRYPT_SALT_LEN)
throw new IllegalArgumentException ("Bad salt length");