承接了一个新项目,需要继承旧的用户数据。
账号密码解密使用了\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);
}