通常数据库系统本身不支持这种散列函数。无论如何都很难编写查询,因为密码哈希是不可搜索的。要使用哈希值验证密码,需要执行以下步骤:
- 按用户名搜索行(不能通过哈希值完成)。
- 从找到的行返回密码哈希。
- 从存储的密码哈希中提取使用的盐和成本因子。
- 使用相同的盐和成本因子从输入的密码构建一个新的哈希值。
- 比较存储的哈希值和新计算的哈希值。
这意味着,您首先必须知道存储的哈希值,然后才能使用它验证输入的密码。这样的哈希函数肯定比在数据库中更好地放置在开发语言中,尤其是当您以后必须切换算法或成本因素并且需要向后兼容时。