【问题标题】:How to check mysql hashed password with salt如何用盐检查mysql哈希密码
【发布时间】:2015-09-28 01:40:05
【问题描述】:

我正在使用教程来设置邮件服务器(它已经在工作),并且我还想使用 users 表登录网站。

教程用来创建账户的sql是:

INSERT INTO 'mailserver'.'virtual_users'
('id', 'domain_id', 'password' , 'email')
VALUES ('1', '1', 
ENCRYPT('PASSWORD', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))),
'email1@mysite.com');

我的看法,

加密('PASSWORD', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16)))

创建一个加盐哈希,对吗?问题是盐看起来是一个随机的未存储值。

我应该如何将它与用户提供的密码进行比较?

Postfix 这样做没有问题,因为它有效,所以我必须遗漏一些东西

【问题讨论】:

  • ENCRYPT 函数将输出一个以 salt 本身为前缀的“salted”字符串,因此将加密密码反馈给它会重新提供原始 salt。
  • @MarkBaker 哦,我不知道。您可以设置一个选择示例,以正确的答案对此进行验证吗?这样我就可以给你完整的答案了。

标签: php mysql


【解决方案1】:

ENCRYPT 函数将输出一个以 salt 本身为前缀的“salted”字符串,因此将加密密码反馈给它会重新提供原始 salt。

当您需要将数据库中的密码与用户输入的密码进行比较时,请使用这样的查询

SELECT * FROM `mailserver`.`virtual_users`
 WHERE `email` = '<the email address entered by the user>'
   AND `password` = ENCRYPT('<the password entered by the user>', `password`);

【讨论】:

    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多