代码之家  ›  专栏  ›  技术社区  ›  Toto

为什么bcrypt()哈希应该存储在(var)二进制文件中?

  •  0
  • Toto  · 技术社区  · 10 年前

    在我们的php应用程序中,我们使用 password_hash() (使用bcrypt)。

    bcrypt哈希 should be stored 在里面 BINARY 或 VARBINARY (MySQL)。

    如果在数据库中进行比较和/或搜索,我完全理解这一要求。(排序规则,区分大小写与不区分大小写)。

    如果数据库仅用作存储,则在php应用程序上与 password_verify() ,我们能留下吗 CHAR 或 VARCHAR ?

    如果没有,为什么?

    1 回复  |  直到 9 年前
        1
  •  3
  •   tadman    10 年前

    您可以存储 password_hash() 是你可以在正常情况下保存的东西 VARCHAR(255) 列,它不是二进制数据,只是一个类似于以下内容的字符串:

    $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
    

    当然,它们区分大小写,但它们只使用普通字母、数字和一些精选的语法。

    这个列不需要索引,事实上这几乎毫无意义。这个 password_verify() 函数针对特定的密码工作,并且故意慢,对系统中的每个用户进行测试需要很长时间。这是为了让人们更难强行猜测密码。

    推荐文章