对 API 密钥进行哈希处理时,是否也应该对后缀/前缀进行哈希处理?

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

我正在生成类似于 Stripe 的 API 密钥,其中我的密钥是 {prefix}_{guid}_{suffix}。

  • 前缀是常数
  • Guid 是密钥的“密码”部分
  • 后缀是用户可见的随机 4 个字符的字符串

应该对整个字符串 {prefix}_{guid}_{suffix} 进行哈希处理还是仅对 {guid} 进行哈希处理?如果只对 guid 进行哈希处理,那么将后缀存储在数据库中的哈希旁边是否存在安全问题?

我读过一些博客,但没有发现太多涉及此的内容。

security database-design hash authorization api-key
1个回答
0
投票

在散列之前向值添加随机前缀和/或后缀称为 salting。这是推荐的做法。

目的是防止某人知道,例如,UserA 是否与 UserB 具有相同的密码,因为它们的哈希值是相同的。因此,您为每个用户添加一个加密安全的随机值前缀/后缀(盐),那么即使他们使用相同的密码,他们的哈希值也将始终不同。

但就您而言,如果您已经提供了版本 4 GUID 作为预哈希值,则保证它是唯一的,因此您无需添加盐。

© www.soinside.com 2019 - 2024. All rights reserved.