public function kryptonite($string){
$salt = "";
$salt_vars = array_merge(range("A","Z"),range("a","z"),range(0,9));
for($i=0;$i < 22;$i++){
$salt.= $salt_vars[array_rand($salt_vars)];
}
return crypt($string, '$6$'.$salt);
}
这将返回上刷新:PHP类函数的散列
$6$vnuqcEA70$CHWmPVsDVb.lVpq1PNsDn7.0fSmBX6FU2PlofK6dJOH7FQp6EdSsde3Aw6to8fY1L01/WOcWz8OIE0OxK1LTj.
$6$7lmp9sD4g$I0fAcDjno2Lf255gg6TxTLt9TRwR803ZXiU9BOWJXhWrGbJdPJ3LvAW9w2KbRZ/3EDSSbFrgF7rV7DdB0VliA0
如果你仔细在第几行它的变化不断。我不认为哈希会不断变化!所以在技术上我永远无法对此进行测试。有人可以帮助我用我的kryptonite
地穴功能或向我解释真的出了什么问题。
为什么不只是使用['password_hash()'](http://php.net/password_hash)?另外,'$ 6 $ ...'是一个无效的哈希字符串。 SHA512哈希字符串格式为$ 6 $ rounds = N $ hashstringhere $'。你应该[正确阅读文档](http://php.net/crypt)! –
1.不要使用'array_rand'作为安全性。 2.使用密码散列API。 – sectus
@ SverriM.Olsen我以为默认轮数为5000,所以你不必声明它,除非修改它。我无法使用password_hash,但我的PHP版本是5.2。*(000webhost)很抱歉地说。我有一些钱从GoDaddy购买主机,然后我将改变功能以支持新的PHP – EasyBB