【问题标题】:PHP Crypt encrypt/decrypt not returning the same hash tagPHP Crypt加密/解密不返回相同的哈希标签
【发布时间】:2013-01-25 23:58:31
【问题描述】:

注册表单 - 密码是 123456:

$pwd = $_POST['pwd'];
$salt = '$2a$10$R.Baj0mvj5doNvtvzDjwP5$';
$password = crypt("$pwd", $salt);

数据库中的哈希:

$2a$10$R.Baj0mvj5doNvtvzDjwPuN/W8Z3n6RVGyM0pM

用户登录时的哈希比较-再次输入密码,123456:

$salt = '$2a$10$R.Baj0mvj5doNvtvzDjwP5$';
$crypt_pass=crypt($password,$salt);

$crypt_pass = $2a$10$R.Baj0mvj5doNvtvzDjwPuN/W8Z3n6RVGyM0pMQB89k2m9nYRIN6O 数据库中的密码哈希为:$2a$10$R.Baj0mvj5doNvtvzDjwPuN/W8Z3n6RVGyM0pM

当我用相同的盐对它们进行哈希处理时,为什么它们不匹配?

【问题讨论】:

  • 密码很可能完全不一样。
  • 但是注册页面用的是123456,然后他们尝试用123456登录,hash不一样?如果是这种情况,Crypt 是如何工作的?有解决办法吗?

标签: php crypt


【解决方案1】:

您使用 Blowfish 作为哈希类型。这将始终为相同的字符串和盐返回不同的值。如果您希望您的哈希值匹配,请使用 SHA 512。

$salt = '$6$rounds=5000$usesomesillystringforsalt$';

【讨论】:

    最近更新 更多