从MySQL获取密码哈希

时间:2017-06-09 18:02:09

标签: php mysql

我在PHP中生成密码如下:

$options = [
    'cost' => 11,
];
// Get the password from post
$passwordFromPost = $_POST['password'];

$hash = password_hash($passwordFromPost, PASSWORD_BCRYPT, $options);

我将它插入MySQL表中。

现在,我想检索它。 我使用的是hash + salt密码,但我想删除salt选项。 我怎样才能在PHP中检索创建的密码?

2 个答案:

答案 0 :(得分:2)

好的,就在这里。您无法再次检索原始密码,因为哈希(哈希+盐)是单向加密技术(这是有道理的,不应该读取任何人的原始密码和滥用)。它的工作方式是,当用户键入他们的密码进行登录时,遵循相同的加密算法(存储时遵循的加密算法)来创建其中的散列。现在比较哈希与哈希之间的比较以获得有效的会话令牌。

  

现在,提出问题是否要更改加密   算法或盐,你需要允许用户使用旧的登录   加密算法。你应该做的是逐步迁移   旧用户的密码哈希到新密码哈希。而且你唯一的选择   获取原始传递是用户输入时。您需要确定是否   他们是旧用户,如果他们允许他们向后登录   兼容算法并以加密方式静默更新其密码   与新盐。

答案 1 :(得分:0)

您无法检索明文密码。

但是 如果在您的情况下网站已启动且人们正在使用它,您可以在密码验证后添加一个功能,以使用新哈希更新数据库中的用户密码。 您可以通过在数据库中添加一个字段来告诉您,从而了解更新了哪些密码。