【问题标题】:Bcrypt in MySQL?MySQL中的Bcrypt?
【发布时间】:2014-08-07 02:33:36
【问题描述】:

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

我在manual 中找不到它还是我错过了它?也许作为存储过程?

【问题讨论】:

    标签: mysql stored-procedures hash passwords bcrypt


    【解决方案1】:

    一旦您为每个密码使用了唯一的盐(并将其与密码一起保存),您将无法在单个 SQL 语句中进行验证,尤其是在使用慢哈希函数时。

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

    【讨论】:

    • 谢谢。我没有提到我只考虑创建帐户而不是登录验证。
    • @PiTheNumber - 单独创建实际上可以工作,但是当我上次检查时,我没有在 MySql 中找到任何合适的函数来散列密码。实际上这很难实现,因为人们希望它也可以用于验证,然后优化器必须分析 SQL 并赋予哈希函数最低优先级(并希望还有其他过滤器,如用户名) )。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2019-01-09
    • 2014-09-29
    • 1970-01-01
    • 2017-08-20
    • 2019-10-30
    • 2014-06-16
    相关资源
    最近更新 更多