2014-06-17 32 views
0

我确实将我的密码作为bcrypt哈希存储在MySQL数据库中。使用MD5和SHA1,可以在数据库中运行散列函数。现在我想知道是否可以在MySQL中运行bcrypt。我想在数据库中创建用户帐户。在MySQL中加密?

我在manual找不到它,或者我想念它吗?也许作为存储过程?

回答

3

只要您为每个密码使用唯一的盐(并将它与密码一起保存),您将无法在单个SQL语句中执行验证,特别是不使用慢哈希函数。

在第一步中,我们应该通过用户名进行查询以获得散列值(和salt),然后在第二步中我们可以用此散列值和相同的盐验证输入的密码。如果您尝试在单个SQL语句中执行此操作,那么数据库必须计算每行的散列值,直到找到匹配项,然后使用慢速散列函数(如BCrypt),则此查询会使您的服务器超载。

+0

谢谢。我没有提到我只是在考虑创建账户而不是登录验证。 – PiTheNumber

+0

@PiTheNumber - 创建单独实际上会工作,但是当我上次检查时,我没有在MySql中找到任何适当的函数来哈希密码。实际上,实现这一点相当困难,因为人们也会期望它也能用于验证,然后优化器将不得不分析SQL并将哈希函数设置为最低优先级(并希望还有其他过滤器,如用户名) )。 – martinstoeckli