2014-04-14 81 views
0

OK。我真的做了一個大的研究,但我沒有任何加密/哈希知識。在我自己的機器上,我已經有了PHP 5.5,並且使用了password_hash函數。我剛剛意識到,我的在線託管有最大的PHP 5.4。PHP <5.5:password_hash compatible crypt hashing

我有一個特殊的類加密,這就是爲什麼有(希望)沒有太多的改變要做。這是我簡單的代碼:

class Enigma { 
    public static function hash($password) { 
     return password_hash($password, PASSWORD_DEFAULT); 
    } 
    public static function verify($password, $hash) { 
     if (password_verify($password, $hash)) return true; 
     return false; 
    } 
} 

,你可以看到這只是一個簡單的疊加,但使用它的第一時刻。我怎樣才能用crypt函數替換password_hash和password_verify函數以便將來兼容passrowd_函數?

例如。現在我將執行crypt(),然後將結果存儲在用戶數據庫中,並且在將來我將切換到password_hash和password_verify函數時,我希望此加密密碼正常工作,並且不會強制每個用戶更改密碼。

我希望在我的研究中我沒有遺漏任何東西。我正在尋找簡單,優雅,安全的解決方案:)。

THX您的幫助,BR

更新:我已閱讀本(http://pl1.php.net/manual/en/function.password-hash.php):

password_hash()創建使用強大的單向散列算法,生成新密碼哈希。 password_hash()與crypt()兼容。因此,由crypt()創建的密碼哈希可以與password_hash()一起使用。

但地下室有很多選擇,我不太清楚,如果他們都是兼容的。

+3

你可以使用密碼兼容包=> https://github.com/ircmaxell/password_compat/ –

+1

確定+1,非常感謝你:)。從來沒有聽說過...我喜歡自己做所有事情,但我會試一試。 –

+0

不客氣。 –

回答

3

按OP的要求:

您可以使用密碼兼容包如果在PHP < 5.5

這是非常有用的,當你希望使用PHP的5.5 password_hash()功能。

+1

這是再一次的似曾相識=) –

+0

非常感謝你,先生:)。 +1,已接受。 –

+0

哈哈!是的,但它可以根據他們的搜索服務於其他人。誰知道Google上最先彈出的是什麼@JohnConde –