API 密钥使用哪种哈希算法?

问题描述 投票:0回答:0

我的 Web 应用程序向客户端发布 API 密钥,我想在我的数据库中散列 API 密钥。但是,似乎如果我遵循最佳实践,即每个哈希都有不同的盐,那么我就无法通过我的数据库中的 API 密钥查找用户。

所以我的问题是,哪种哈希算法是 2023 年的“最先进”算法?

例子:

假设我的用户已获得一个 api 密钥,

my-api-key
。如果我使用 argon2id 将该密码存储在数据库中,我有以下哈希:

argon2id$19$8192$1$1$7eMA1uCGC2U$aIqS05xbn0DXdXNUKbDG1A

当用户进行 API 调用时,它可能看起来像这样(实际上它不会作为查询参数传递):

GET https://www.example.com?api_key=my-api-key

我希望能够说(伪代码):

hashed_api_key = hash("my-api-key")
SELECT * FROM users WHERE api_key = hashed_api_key

但是,每次调用

hash()
时,都会使用随机盐,因此我有不同的输出:

argon2id$19$8192$1$1$vrDlrC4Qkmo$1lEogx/KgrJyPVS40Xgd+Q
argon2id$19$8192$1$1$D/8tzjThXNo$OsX5f4HjdJM5h5aENFk4DQ

使用散列 API 密钥进行数据库查找的最佳实践是什么?我应该使用没有随机盐的 argon2 吗?还是有不同的最佳实践?

password-hash argon2-ffi
© www.soinside.com 2019 - 2024. All rights reserved.