在我们的php应用程序中,我们使用 password_hash() (使用bcrypt)。
password_hash()
bcrypt哈希 should be stored 在里面 BINARY 或 VARBINARY (MySQL)。
BINARY
VARBINARY
如果在数据库中进行比较和/或搜索,我完全理解这一要求。(排序规则,区分大小写与不区分大小写)。
如果数据库仅用作存储,则在php应用程序上与 password_verify() ,我们能留下吗 CHAR 或 VARCHAR ?
password_verify()
CHAR
VARCHAR
如果没有,为什么?
您可以存储 password_hash() 是你可以在正常情况下保存的东西 VARCHAR(255) 列,它不是二进制数据,只是一个类似于以下内容的字符串:
VARCHAR(255)
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
当然,它们区分大小写,但它们只使用普通字母、数字和一些精选的语法。
这个列不需要索引,事实上这几乎毫无意义。这个 password_verify() 函数针对特定的密码工作,并且故意慢,对系统中的每个用户进行测试需要很长时间。这是为了让人们更难强行猜测密码。