password_hash/password_verify/(JAVA)

柳英资
2023-12-01

承接了一个新项目,需要继承旧的用户数据。

账号密码解密使用了\yii\base\Security::generatePasswordHash($password, $cost)方法。

generatePasswordHash($password, $cost = null)
//php的生成密文
//默认的cost是13,是时间复杂度
return password_hash($password, PASSWORD_DEFAULT, ['cost' => $cost]);

账号密码解密使用了\yii\base\Security::validatePassword($password, $db_pwd)方法。

\yii\base\Security::validatePassword($password, $db_pwd);
//即
password_verify($password, $db_pwd);

其中$password是明文,$data是加密值。

JAVA验证代码

1. 注意要替换$2y$,$2y$,$2a$,$2b$不影响散列值。

    public boolean match(String password, String db_pwd) {
        //'$2y$'替换成'¥2a$'
        String u = "$2a".concat(db_pwd.substring(3));
        return BCrypt.checkpw(password, u);
    }
 类似资料: