首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存储许可证密钥

存储许可证密钥
EN

Security用户
提问于 2012-09-30 16:02:31
回答 1查看 1.1K关注 0票数 4

我正在创建一个应用程序,该应用程序生成许可证密钥并将其存储在数据库中(许可证是在线检查的)。我不想存储这些未经处理的许可证,以防数据库被盗。

但是,一旦许可证密钥被散列(使用salt),就很难检查数据库中是否存在给定的密钥,因为使用的salt将随每个密钥而改变。

找到和验证散列许可证密钥的最佳解决方案是什么?我已经考虑过对半个许可证密钥进行散列,然后使用它来识别许可证行,然后再检查使用salt进行散列的完整密钥。这太冒险了吗?

我还考虑过使用键的最后1/4作为标识符(例如AAAB = 1,AAAC =2等),密钥长度为16,这允许2^20键。

(附带注意:键是base32编码的,将有16个字符长(但可以选择更长)。该应用程序是一个通用的应用程序--即它与任何特定的用例无关--因此对于所需许可证的数量没有固定的估计--尽管键长度可以根据该esimate来增加)。

EN

回答 1

Security用户

回答已采纳

发布于 2012-09-30 16:30:51

但是,一旦许可证密钥被散列(使用salt) --很难检查数据库中是否存在给定的密钥--因为所使用的salt将随每个密钥而改变。

盐类设计用于当您已经有一个标识符来查找相应的散列字段时使用。例如,您不会查看“密码”是否存在于任何密码字段中,而是查看“用户”的密码是否为“密码”。

如果要对密码(许可证)进行盐分,则需要为其分配一个唯一标识符,该标识符存储时不需要任何散列。

为许可证的第一个字节准备一个固定宽度的唯一ID,或者使用分隔符,然后在服务器上散列之前将ID拆分。

票数 4
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/20865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档