根据PHP的文档,bcrypt salt是由
"$ 2a $",两位数的成本参数"$",以及字母"./0-9A-Za-z"中的22位数字
因此,如果我使用crypt()函数来哈希我的密码,结果输出包括前七个字符($ 2a $ 10 $,如果10是成本参数)作为盐的一部分 - 并且,根据所有示例我能够在互联网上找到这个完整的输出写入db.
我想知道将剩下的盐和加密数据存储在第一个字符的重点是什么.他们的意思对我来说是完全清楚的,但是我无法理解为什么这些信息应该与哈希的其余部分一起编写.它们不是关于算法的"正义"信息和计算的自适应成本吗?那么存储此类与应用程序相关的信息有什么好处?并且(即使可能听起来很幼稚)为什么要将它们泄露给最终可以抓住我的数据库的攻击者呢?