我知道 PHP 的 crypt() 函数是这样工作的:
crypt($password,$salt);
创建 bcrypt 哈希(被认为非常安全)的格式是:
crypt("$2y$15$password",$salt);
其中$2y指定使用bcrypt,15为轮数,应在10以上。
这是我的问题。跑步:
crypt("$2y$15$password");
据我了解,生成一个不错的大随机盐并将其添加到哈希中,并且在比较密码时,它会自动提取。这意味着我不必在我的表中有一个盐字段,或者独立生成一个盐。这是安全和正确的吗?
例如,当我运行时:
$test = "Hello";
echo crypt("$2y$15$test") . "\n";
我得到:
$6$R59d/nemygl0$/Gk6s57K2eFAkH4BWDGYhfdhbYGcqz.GRbD7qGDKOlhE5Lk.kgCoGQo/sDCCf1VDffdh7jtXPn/9rsexwrpFk1
其中前 6 位指代某个算法编号,两个 $ 之间的下一位是盐,之后的位是哈希。这个对吗?
另外,将此哈希与另一个哈希进行比较以进行验证的语法是什么?谢谢。