2011-08-14 25 views
3

可能重複:
How do you use bcrypt for hashing passwords in PHP?PHP和Bcrypt

我使用PHP開發的API。我以前的,我想從遷移API的版本是建立使用Rails 3

我只有一個問題。以下技術爲用戶存儲的密碼進行了加密。

BCrypt::Engine.hash_secret(password, user.password_salt); 

我該如何在PHP(Codeigniter)中執行相同的操作,以便用戶可以繼續使用舊密碼?

感謝所有幫助!

回答

1

我認爲你可以使用crypt函數與Blowfish算法:http://php.net/manual/en/function.crypt.php

另一種選擇是使用的mcrypt:http://www.php.net/manual/en/ref.mcrypt.php

編輯:例如

這裏就是我會做:

$hashedPassword = crypt('password', '$2a$11$abcd'); 

使用這樣的隱窩:

hash = crypt(password, salt); 

$ hashedPassword現在應該包含的哈希值。

基本上以使用吹魚alogrithm,鹽需要是這種格式:$ 2A $ [2位成本參數] $ [22位的字母數字字符串]

要確定是否有河豚你的服務器:

if (CRYPT_BLOWFISH == 1) { 
    echo 'Blowfish:  ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n"; 
} 
+0

好聽起來很有趣。不幸的是,似乎很複雜,我不知道如何「複製」Bcrypt技術。是否有可能幫助醫生將上述內容「轉換」爲mcrypt? –

+0

這工作完美!謝謝! –

+0

原來,它在我的本地機器上完美工作,但在服務器上,從crypt返回的哈希是不同的。怎麼來的? –

1

我不知道它是如何做到的,但看看源爲Tank Auth,它使用bcrypt。我認爲如果系統中存在內置庫,並且在必要時可以回退到包含的版本,就足夠智能。