【问题标题】:which mysql fuction is equal to php; password_hash? [duplicate]哪个mysql函数等于php;密码哈希? [复制]
【发布时间】:2017-03-14 11:39:09
【问题描述】:

我用这个命令在 mysql 表中创建了一个默认的用户名和密码。

 insert into users (email, password) values('admin', md5('1234'));

然后尝试用php验证;

password_verify($_POST['password'], $results['password'])

但是,它没有经过验证..但是,如果我创建一个用户名和密码

$stmt -> bindParam(':password', password_hash($_POST['password'], 
PASSWORD_BCRYPT));

可以验证..

我的问题:

我想用 mysql 命令创建默认用户名和密码,并希望网站(php)通过用户输入来验证它。

为此,我需要使用哪个 mysql 函数来进行密码加密? md5() 似乎不等于 password_hash in php..

非常感谢

【问题讨论】:

  • mysql 没有password_hash 的等价物,这就是你假设的存储方式。您存储哈希,而不是纯文本密码。你做得很好。
  • 不是重复的。这些问题甚至都没有关系。
  • @Andrew & user7099140,mysql确实有password_hash的等价物,即PASSWORD函数MySql Password Hashing
  • PASSWORDpassword_hash() 是两个非常不同的东西。一个结果与另一个不对应。
  • 我很难相信您发布的内容确实有效。

标签: php mysql password-hash


【解决方案1】:

首先让我们澄清一些事情:

password_hashpassword_verify 是纯 PHP 函数。它们与 MYSQL 无关。

password_hash 不使用 MD5 算法对您的密码进行哈希处理。你可以find more information about it in the docs

那么我们如何使用它以及工作流程是什么样的?

$hash = password_hash('your_password'); // Generates hash $verified = password_verify('your_password', $hash) // Verifies password against hash var_export($verified) // Would echo boolean true

在你的情况下,你应该:

  1. 存储用户时将哈希存储在数据库中
  2. 为了让某人登录,您从数据库中获取用户哈希
  3. 根据哈希验证密码,就像我们在上面所做的那样。

我希望它有所帮助。

【讨论】:

  • 还需要注意的是,md5 和 password_hash() 产生了两种不同的长度,OP 应该确保它们的密码列的长度足够长以容纳 (60 length, min.) 字符串.
猜你喜欢
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2015-09-09
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
相关资源
最近更新 更多