【问题标题】:Generating pbkdf2_sha256 hash of a password by means of MySQL通过 MySQL 生成密码的 pbkdf2_sha256 哈希
【发布时间】:2013-06-30 13:36:11
【问题描述】:

我有一堆散列密码pbkdf2_sha256$10000$0POUvc6y8M4z$QyldL9qyQO...。是否可以在 SQL 查询中验证它们?不要问为什么。

【问题讨论】:

  • 为什么不问为什么?为什么?
  • 我可以通过python获取这个hash,但我必须在MySQL中获取。
  • 为什么会这样?在 MySQL 中可能无法高效完成。
  • 正在尝试使用 lib_mysqludf_sys 模块 + 外部脚本...

标签: mysql hash sha


【解决方案1】:

通常数据库系统本身不支持这种散列函数。无论如何都很难编写查询,因为密码哈希是不可搜索的。要使用哈希值验证密码,需要执行以下步骤:

  1. 按用户名搜索行(不能通过哈希值完成)。
  2. 从找到的行返回密码哈希。
  3. 从存储的密码哈希中提取使用的盐和成本因子。
  4. 使用相同的盐和成本系数从输入的密码构建一个新的哈希值。
  5. 比较存储的哈希值和新计算的哈希值。

这意味着,您首先必须知道存储的哈希值,然后才能使用它验证输入的密码。这样的哈希函数在开发语言中肯定比在数据库中更好,尤其是当您以后必须切换算法或成本因素并且需要向后兼容时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-04
    • 2016-02-06
    • 2015-05-12
    • 2022-11-19
    • 2017-10-15
    • 2021-05-14
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多