【发布时间】:2016-12-17 21:53:54
【问题描述】:
我正在使用 pbkdf2 算法来散列密码。 为每个密码生成一个随机盐,并设置迭代次数 为了使计算持续大约 1 秒。
我还在 sambe 缓冲区中保存盐和哈希:
-----------------------
| SaltLen | 4 |
-----------------------
| Salt | saltBytes |
-----------------------
| HashLen | 4 |
-----------------------
| Salt | hashBytes |
- ---------------------
我的问题是这个散列密码没有链接到一个用户(一个用户可以有多个密码),我需要有可能只使用密码本身来取消密码。 我看到的唯一方法是哈希密码以取消数据库中的每个盐,直到找到相同的哈希,这将永远需要(每个盐 1 秒)。
有没有更好的方法?
【问题讨论】:
-
“取消密码”是什么意思?
-
在这种情况下,密码是许可证,我想将其标记为已取消
-
您将需要某种标识符来首先查找该行。例如一个从 1、2、3 开始的 64 位整数。如果需要,您可以将其附加到密码的开头,但它将是未散列的形式。
-
我编辑了问题以使其更清晰。我现在采用的解决方案是为每个用户而不是每个密码使用盐。
-
我发现我需要做的是每个用户都有一个盐,而不是每个密码一个盐,否则我无法从登录链接到匹配的盐。 :)