2012-10-11 39 views
2
$salt = uniqid(); 
    $crypt = md5($password , $salt); 
    $new_pass = $crypt.':'.$salt; 

在數據庫:­ot÷„[ªà%Ûʼn¹:17b8bc731c322c9e05a26666458117f4MD5 +鹽給我一些奇怪的字符

這是一個語法錯誤?或者數據庫沒有設置正確的字符格式?

+0

所以,12個字節用於MD5摘要和32個字符用於'uniqid'輸出?奇怪... –

+0

joomla風格,是嗎? – frankie

回答

11

您啓用raw_output

PHP DOC

如果可選raw_output設置爲TRUE,那麼MD5摘要,而不是與長度返回原始的二進制格式16.

變更

$crypt = md5($password , $salt); 
         ^------ You moved the salt to raw_output 

$crypt = md5($password . $salt); 
         ^------ Should be this 


出於安全原因,我不會建議你用md5進行口令散列處理。 MD5被破壞得很厲害,以至於不再需要很長時間才能找到合適的碰撞或反向散列。 一旦中斷,散列算法只會變得更糟,永遠不會更好,因此選擇完整的散列算法會更好。

標準

更好的選擇

+1

您的意思是「note」而不是「not」? –

+0

@Alex Lunix已更正 – Baba