2012-05-25 36 views
0

我有一箇舊的數據庫與PHP通+鹽md5加密,這我試圖使用CakePHP,但蛋糕加密結果使用不符合礦山:CakePHP加密效果不佳嗎?

$pass = 'francis'; 
$data['raw_pass'] = $pass; 
$data['cake_hash_pass'] = Security::hash($pass, 'md5', $use_salt); 
$data['php_md5_pass'] = md5($pass . ($use_salt ? '123' : '')); 
var_dump($data); 

$use_salt = false;這裏是結果:

array 
    'raw_pass' => string 'francis' 
    'cake_hash_pass' => string 'd0ab7fe6c314f4fe5b6c18a0157c96b4' 
    'php_md5_pass' => string 'd0ab7fe6c314f4fe5b6c18a0157c96b4' 

它匹配,沒問題。但是,當我加入鹽$use_salt = true;

array 
    'raw_pass' => string 'francis' (length=7) 
    'cake_hash_pass' => string '74055e005d086abb69c1f82e8bf1f061' (length=32) 
    'php_md5_pass' => string '8d709b4b6461aef614529a83d883c64b' (length=32) 

結果是不一樣的......我有種陷在這裏,介紹CakePHP文檔,我可以讀:

「布爾$鹽可選假

如果爲true,則自動將應用程序的鹽值附加到$ string(Security.salt)中。「

正在使用」。「在$pass . '123'不追加嗎?

而且,在我core.php中的文件:

/** 
* A random string used in security hashing methods. 
*/ 
    Configure::write('Security.salt', '123'); 
+0

你的意思是哈希,不加密 – Oleksi

回答

0

是用 「」在$通過。 '123'沒有附加?

您可以測試,現在,讓我們知道:

$temp = ($pass . ($use_salt ? '123' : '')); 
echo $temp; 
+0

以下網址:http://api20.cakephp.org/view_source/security#line- 86,我發現CakePHP在通過之前追加鹽。我做的是相反的;) –