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