PHP,可以吗?将密码哈希中的字符串作为主键存储在数据库中?

Posted

技术标签:

【中文标题】PHP,可以吗?将密码哈希中的字符串作为主键存储在数据库中?【英文标题】:PHP, can ? store string from password_hash as primary key in database? 【发布时间】:2018-08-30 20:20:16 【问题描述】:

我有一个字符串配置,例如:“healtheworld”

我使用这样的密码哈希转换它

password_hash($string, PASSWORD_DEFAULT)

然后我将它存储在数据库中,内部字段>>“令牌”(主键)

我能做到吗?

如果可以的话,如果再次生成password_hash字符串,是否有机会在数据库上出现同样的结果?

【问题讨论】:

总之,是的,应该没问题。见security.stackexchange.com/questions/162679/… password_hash("healtheworld", PASSWORD_DEFAULT) 每次使用时都会生成不同的哈希,这是因为为了对抗彩虹表..您需要使用password_verify("healtheworld", $hash) 来验证数据库存储的哈希..php.net/manual/en/function.password-verify.php跨度> 是的,你可以。但显然不会有“自动增量”,这意味着您必须在插入数据时提供密钥。旁注:您也可以使用 UNIQUE 键 但是如果使用password_hash()@CD001,即使密码是the same 开头的段落“迈克尔更改了他的用户名但他的密码非常熟悉:”,哈希值也会有所不同: @JayBlanchard - 我大概想到了。写评论后 0.5 秒 ;) 【参考方案1】:

是的,因为使用password_hash() 完成的散列密码会在每次您可以将生成的散列用作表中的主键时生成唯一散列。只需确保该列的长度为 60 个或更多字符即可。

【讨论】:

天哪,你知道我的意思 :)... 我觉得我的英语真的很糟糕 :) 谢谢先生 如果某个答案解决了您的问题,请考虑接受该答案。以下是meta.stackexchange.com/questions/5234/… 然后返回此处并对勾号/复选标记执行相同操作直到它变为绿色的方法。这通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,可能想要发布(更多)答案。您将获得积分,并鼓励其他人帮助您。 欢迎来到 Stack!

以上是关于PHP,可以吗?将密码哈希中的字符串作为主键存储在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 2008 中转换文本字符串中的哈希密码

用 bcrypt (PHP) 比较两个哈希值

将密码转换为哈希 PHP

存储哈希密码字节而不是字符

在缓存中安全地存储密码哈希

你能计算出 Active Directory 使用的密码哈希吗?