仅在使用password_hash()
之前,我检查PASSWORD_DEFAULT
=== PASSWORD_BCRYPT
看看是否需要对密码进行散列化之前对其进行一些清除(Argon2不需要此)。
我只是先通过快速哈希将其传递,因为bcrypt存在NULL字符和密码长度超过72个字符(more info和a different example)的问题。
但是在PHP 7.4中,常量PASSWORD_DEFAULT
现在设置为NULL
。
那么我怎么知道将使用哪种算法password_hash()
?
这是一个有趣的问题,我认为尚无标准功能。这不是一个大问题,因为哈希本身包含一个标识符,该标识符告诉我们使用了哪种哈希算法。这里要注意的重要一点是PASSWORD_DEFAULT
是constant。常数不变。
要弄清楚在使用默认常量(过去是,现在仍然是bcrypt)时使用哪种算法,您需要生成一些虚拟散列并查看其开头。我们甚至可以使用一个不错的辅助函数password_get_info()
password_get_info()