2013-05-30 40 views
2

我想在PHP和共享服務器上使用bcrypt哈希值我將使用的是普通的Unix,我無法在其上安裝任何東西。我的PHP的版本是5.3或5.2,而不是5.5,使用password_hash的這段代碼將不起作用。在5.2或5.3上的bcrypt

$password = '123456'; 
$options = array(
    'cost' => 7, 
    'salt' => 'BCryptRequires22Chrcts', 
); 
$hash=password_hash($password, PASSWORD_BCRYPT, $options); 

即使有很多關於bcrypt的談話,我沒有找到關於它的任何明確的命令或代碼示例。關於crypt命令的問題,php.net有一個page,這對於初學者來說非常安靜。 所有我想要的是實現這樣的功能:

bcrypt($password,$salt) 

有沒有簡單的命令(不幾十碼的包括循環)這樣做呢? 如果沒有,是否有任何漏洞被純化的代碼下載?

在此先感謝

+2

首先,請停止使用PHP 5.2 - 它在兩年前宣佈報廢,並且有幾個未修復的安全漏洞。 – Spudley

+0

@Spudley稱他使用共享主機。通常你不能更新你的自己 – MKroeders

+5

@Hendriq - 那麼你應該使用一個不同的託管公司;任何託管公司仍然迫使他們的用戶堅持5.2是疏忽。這意味着他們在兩年內沒有對PHP版本進行任何安全補丁,而且他們可能也過時地修補了服務器上的其他軟件。 – Spudley

回答

3

有可用來允許PHP 5.3和5.4,以使用新的5.5 password_xxx()函數庫。您可以下載from here on Github

這個庫是由相同的PHP核心開發人員編寫的,他們在PHP 5.5中編寫了實際的內置password_xxx()函數,因此它是100%兼容的。只需將它包含在代碼中,PHP 5.3和5.4就可以像PHP 5.5一樣使用這些函數。

該庫是而不是與PHP 5.2兼容,因爲不再支持5.2(並且在兩年多時間內還沒有被支持)。如果你使用5.2,你應該緊急考慮升級。

請注意,即使在PHP 5.3上,您也需要使用大於5.3.7的版本,因爲它依賴於該修補程序版本中修復的功能。 (當你運行它時,庫會測試它)。

如果你絕對無法升級你的PHP的版本與此庫兼容,那麼下一個最好的選擇是使用由同一作者寫的舊密碼管理器庫,稱爲PasswordLib

+0

謝謝,但我找不到有關bcrypt的任何內容:https://github.com/ircmaxell/PHP-PasswordLib/blob/master/lib/PasswordLib/Hash/Hash.php – amerza

+0

[文檔狀態](https:// github .com/ircmaxell/PHP-PasswordLib#規範),它支持BCrypt(又名blowfish),並且它是默認的散列類型,並且已經使用了它,我可以證明它確實會生成bcrypt散列。如果你正在閱讀源代碼,它有一個名爲'Blowfish'的類,可能是相關的。 – Spudley