1

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

4

1 回答 1

0

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

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

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

于 2013-07-03T08:12:20.947 回答