我已经阅读了网站上提供的信息
PHP Manual Entry for
crypt()
,但我发现自己仍然不确定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
这种杂烩显然不是漩涡,事实上是
标准\u DES
$2a$07$
$foo = 'foo';
$salt = '$2a$' . hash('whirlpool', $foo); // 128 characters, will be truncated
$hash = crypt($foo, $salt);
// $hash = $2a$07$b1b2ee48991281a439da2OHi1vZF8Z2zIA.8njYZKR.9iBehxLoIC
我注意到我可以提供一些字符的变化,这里显示为'
07$
04$
和
15$
两个都有用,但是
01$
通过
03$
不工作(生成空白字符串),以及
99$
85$
使其恢复为
标准\u DES
再一次。
下面这三个字的意义是什么
$2a$
'字符串,正如我在手册中所相信的,它指示crypt函数使用blowfish方法。
2a美元$
"应该足以指导
地穴()
使用河豚法;那么,以下三个角色的意义是什么?那么,如果这三个字符如此重要,salt的正确格式是什么?