mysql版本8.0中的hash()函数

时间:2018-09-17 21:42:11

标签: mysql hash passwords

我正在尝试将密码存储在用户表中。我当然想先加盐和散列。

但是mysql中不再有hash()方法了。如何在8.0版中执行此操作?有其他选择吗?

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在将密码发送到SQL之前,您应该先对应用中的密码进行哈希处理。

我为什么要这样说?毕竟,您可以这样做:

<div class="slider">
</div>

但是现在您将密码“ xyzzy”以纯文本形式显示在查询日志和二进制日志中,即使该密码以散列形式存储在表本身中也是如此。如果您没有适当地保护日志,那么黑客可能会保留它们并找到每个人的密码。

相反,请在应用程序代码中执行哈希操作。获取结果,并将哈希字符串逐字保存在数据库中。

INSERT INTO Accounts (user, salt, password) 
VALUES ('myuser', '1234', SHA2(CONCAT('xyzzy', '1234'), 256))

这样,纯文本密码就不会被记录。

同样,当您在登录时对用户进行密码检查时,读取盐,然后使用它对输入的密码进行哈希处理,然后将其与数据库中存储的哈希字符串进行比较。

INSERT INTO Accounts (user, salt, password) 
VALUES ('myuser', '1234', 'd3822b5f03ad0c1a363d874238f6b48fd68a131cc35d5e55c77a81db1d266b84')