gpt4 book ai didi

php - 为什么 bcrypt() 哈希值应该存储在 (var)binary 中?

转载 作者:行者123 更新时间:2023-11-29 07:18:43 27 4
gpt4 key购买 nike

在我们的 PHP 应用程序中,我们使用 password_hash()(使用 bcrypt)生成密码哈希值。

bcrypt 哈希值 should be storedBINARYVARBINARY (MySQL) 中。

如果比较和/或搜索是在数据库内完成的,我完全理解这个要求。 (排序规则、区分大小写与不区分大小写)。

如果数据库仅用作存储,并且在 php 应用程序上使用 password_verify() 进行比较,我们可以保留 CHARVARCHAR

如果没有,为什么?

最佳答案

您可以存储password_hash()的结果是可以保存在普通 VARCHAR(255) 列中的内容,它不是二进制数据,只是一个如下所示的字符串:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

当然,它们区分大小写,但除了常规字母、数字和一些精选的语法之外,它们永远不会使用任何内容。

该列不需要建立索引,事实上这几乎没有意义。 password_verify() 函数针对特定密码进行工作,并且故意缓慢,对系统中的每个用户进行测试将需要很长时间。这是为了让人们更难暴力破解密码。

关于php - 为什么 bcrypt() 哈希值应该存储在 (var)binary 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36897396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com