【问题标题】:How do I validate an api key with bcrypt if you only have the key?如果您只有密钥,如何使用 bcrypt 验证 api 密钥?
【发布时间】:2022-10-05 12:48:19
【问题描述】:

在我的项目中,用户将提供一个 API 密钥,我想将其与数据库中的密钥进行比较。服务器唯一拥有的是请求标头中提供的纯文本密钥。

在 bcrypt 中,我想在数据库中找到这个密钥来验证它。唯一的问题是数据库中的值被散列和加盐。 bcrypt.compare() 可以工作,但前提是我有用户电子邮件之类的东西,可以专门在数据库中找到一个我可以比较密钥的文档。

循环浏览每个文档并比较密钥是我唯一的选择,还是有更有效的方法?

【问题讨论】:

  • 考虑到 bcrypt 被设计为计算成本很高,循环访问密钥将非常低效。当然,取决于迭代次数。

标签: javascript node.js hash cryptography bcrypt


【解决方案1】:

通常,出于这个目的,您还可以随请求发送某种类型的客户端 ID(不仅仅是 api 密钥),以了解要检查的密钥。

遍历许多键会非常慢,这就是重点。存储更多信息(例如某种查找)会削弱您的实现,您可能不应该这样做。在通常的设计中,您只需要一个用户名或客户端 ID 或您所称的任何名称。

【讨论】:

    【解决方案2】:

    嗨,darkshadow trail,你有没有找到任何解决方案我现在面临同样的问题

    【讨论】:

      猜你喜欢
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-30
      相关资源
      最近更新 更多