2012-06-18 43 views
0

我正在PHP中創建一個登錄系統,我想知道這個當前的散列函數是否足夠安全。如何讓這個更安全?

public function genHash($user, $pass) 
{ 
    $user = strtoupper($user); 
    $staticSalt = $this->staticSalt; 
    $dynamicSalt = hash('SHA512', md5($user . $pass) . sha1($pass) . hash('SHA512', $user . $pass)); 
    $final  = hash('WHIRLPOOL', $pass . $dynamicSalt . $staticSalt); 
    return $final; 
} 

靜態鹽只是一堆隨機字符。無論如何,我怎樣才能讓它更安全?

+2

你只需要散列一次,並使用一些可以引入工作因子的東西,比如bcrypt。 – alex

+3

請不要創建您自己的密碼散列方案。使用[bcrypt](http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php)。 – jmkeyes

+0

可能重複的[安全散列和鹹的PHP密碼](http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords) –

回答

2

您可以爲每個用戶使用不同的鹽,並將它們存儲在數據庫中,但除此之外,該系統看起來非常安全。 (不知道服務器的細節)。

編輯:

理論上multihashing串增大哈希衝突的機會,但我沒有發現任何可靠的,說這是一個實際的風險。

+2

+ 1爲每個用戶建議一個獨特的散列。 –