我正在保护对我正在使用 API 密钥构建的 REST 服务的 API 调用。该计划是:
- 当我们获得一个新客户端时,生成一个 API 密钥(一个 UUID)。
- 通过电子邮件将 API 密钥发送给他们。
- 他们在每次调用我们的服务时发送 API 密钥(通过 HTTPS)。我们将在我们的数据库中查找 API 密钥(首先对其进行加密或散列)并找出 API 密钥用于的帐户。
最终,我们将为所有这些添加用户帐户和门户,以便客户无需我们参与即可生成和停用 API 密钥。
我的问题在最后一部分。在将 API 密钥存储到数据库之前,我应该对它们进行散列还是加密(或保持未加密?)?我试图理解其中的含义。我知道,如果我对它们进行哈希处理,那么如果他们获得数据库访问权限,我就会防止有人知道所有 API 密钥。但是我应该考虑的其他事情是什么?例如,是否有性能原因来做一个优于另一个?