如何从sha256加密迁移到bcrypt for PHP?

时间:2015-06-19 14:11:40

标签: php encryption

  

登录:

$rows       = $sql->fetch(PDO::FETCH_ASSOC);
$us_id      = $rows['id'];
$us_pass    = $rows['password'];
$us_salt    = $rows['password_salt'];
$status     = $rows['attempt'];
$saltedPass = hash('sha256', "{$password}{$this->passwordSalt}{$us_salt}");
  

注册:

$randomSalt = $this->rand_string(20);
$saltedPass = hash('sha256', "{$password}{$this->passwordSalt}{$randomSalt}");

如何将sha256加密方法转换为bcrypt?

1 个答案:

答案 0 :(得分:2)

密码哈希使用bcrypt

如果您使用的是PHP 5.5或更高版本,则可以使用内置password_hash()函数并将$algo参数设置为PASSWORD_BCRYPT来创建bcrypt哈希值。您可以这样使用:

$options = array('cost' => 11, 'salt' => 'my_salt');
$hash = password_hash("my_secret_password", PASSWORD_BCRYPT, $options);

<强>移植

无法从sha256批量迁移到bcrypt,因为您需要原始的纯文本数据(密码),这是不可用的。

通常,网站会执行分阶段转换,您可以在用户执行成功登录时对其进行转换。例如:

  1. 在数据库中为密码创建一个字段,类型为sha256或bcrypt
  2. 登录后,使用数据库中的类型验证密码
  3. 如果sha256成功,使用输入的密码创建一个新的bcrypt条目,存储并将密码类型更新为bcrypt。在下次登录时,bcrypt现在将用于验证。