2016-07-07 42 views
0

https://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/PHP bcrypt給人非常短的輸出因爲某些原因

我下面這個教程在我的網站上創建一個登錄系統,但是當我嘗試哈希與bcrypt密碼,如圖教程輸出是非常短的因爲某些原因。

例輸入密碼:gf45_gdf#4HG

舉例鹽:$ 2A $ 20 $ wEJ27V9qx.HWP68SNLcF7w ==

示例輸出哈希:$ 2l6f23nreXR6

我覺得這將是很容易蠻力,比起一些輸出網上這是相當長的,下面的代碼:

$cost = 10; 
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.'); 
$salt = sprintf("$2a$%02d$", $cost) . $salt; 
$hash = crypt($password, $salt); 

有沒有人有一個想法如何,我可以增加長度我的哈希?

+4

爲什麼所有的時候你可以使用[password_hash()](http://php.net/password_hash)並讓它做所有的繁重工作? –

+0

我無法使用password_hash(),因爲我在免費主機中運行我的網站,只允許我使用PHP 5.2 –

+0

您可以使用此backport:https://github.com/ircmaxell/password_compat它取決於你的主機的PHP包是如何構建的。 – mkasberg

回答

1

那麼根據手冊:http://php.net/manual/en/function.crypt.php 它會返回一個「字符串比13個字符短,並保證與鹽不同」,如果它出錯。所以這可能是怎麼回事?
嘗試檢查系統上的CRYPT_BLOWFISH == 1。

或者只是使用password_hash(),因爲它應該爲您處理鹽生成。

+0

我檢查和CRYPT_BLOWFISH實際上是0,但我不能使用password_hash(),因爲我的免費主機只允許我使用PHP 5.2。 –

+0

它看起來像你正在使用Blowfish salt'$ 2a $ ...'。如果不支持'CRYPT_BLOWFISH',這將不起作用。 – mkasberg

+0

那麼,我能做什麼? –