解析中的密码加密


password encryption in parse

由于parse.com正在关闭其服务,我现在必须迁移到mysql。但我似乎不知道它的密码生成方法。

示例密码为:

"$2a$10$oNQjqXhZjWHVb.ock1Lfs.D4yeHhtaefiuHNIksambfsSCix/96"

我阅读了一些资料,发现它使用bcrypt生成密码,成本为10。尽管如此,我还是无法在PHP中获得这个概念并实现它(我正在为我的应用程序构建API)。

下面是我遇到的相同的链接:

在数据库中存储Bcrypt哈希密码时,应使用哪种列类型/长度?

有人能帮我在php中构建相同的密码生成方法吗?这样我就不会失去现有的应用程序用户(我需要验证登录密码,并在注册时生成密码)。

提前感谢!

您应该使用password_verify():

$hash = '$2a$10$oNQjqXhZjWHVb.ock1Lfs.D4yeHhtaEFdiuHNIkSsambfsSCix/96'; // e.g. coming from database
$userInput = isset($_POST['password']) ? $_POST['password'] : null; // coming from user input form
if (password_verify($userInput, $hash)) {
    // user password valid
}
else {
    // user password invalid
}