Der*_*sed 15 php hash crypt blowfish salt
我已经阅读了PHP手册输入中crypt()
提供的信息,但我发现自己仍然不确定触发Blowfish算法的salt的格式.
根据手动输入,我应该使用'$ 2 $'或'$ 2a $'作为16个字符串的开头.然而,在以后的例子中,他们使用更长的字符串:" $2a$07$usesomesillystringforsalt$
",这表明,我认为任何字符串我提供将切片和切块以适应模型.
我遇到的问题实际上是触发河豚算法中VS STD_DES
.例:
$foo = 'foo';
$salt = '$2a$' . hash('whirlpool', $foo); // 128 characters, will be truncated
$hash = crypt($foo, $salt);
// $hash = $26HdMTpoODt6
Run Code Online (Sandbox Code Playgroud)
那哈希显然不是漩涡,事实上STD_DES
只有盐的前两个字符用于盐.但是,在PHP手册的例子中,他们的盐以' $2a$07$
' 开头,所以如果我将这三个字符添加到相同的代码中,我得到以下内容:
$foo = 'foo';
$salt = '$2a$' . hash('whirlpool', $foo); // 128 characters, will be truncated
$hash = crypt($foo, $salt);
// $hash = $2a$07$b1b2ee48991281a439da2OHi1vZF8Z2zIA.8njYZKR.9iBehxLoIC
Run Code Online (Sandbox Code Playgroud)
我发现我可以提供在此处显示为"人物存在一些差异07$
",例如04$
和15$
两个工作,但01$
通过03$
不工作(生成一个空字符串),和值等99$
,并85$
使其恢复到STD_DES
再次.
这些三个字符跟在' $2a$
'字符串之后的意义是什么,正如我通过手册所指示的那样,指示crypt函数使用blowfish方法.
根据手册," $2a$
应该足以指示crypt()
使用河豚方法; 那么,以下三个字的重要性是什么?那么,如果这三个字符如此重要,那么盐的正确格式是什么?
Chr*_*ung 15
后面的数字2a
指定要执行的轮数的log2.例如,10表示1024轮.通常,10是正常的.不要使用太大的数字,否则您的密码将永远需要验证.
请参阅为什么BCrypt.net GenerateSalt(31)会立即返回?相关的东西.:-)