2012-06-18 2 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

Вы можете использовать разные соли для каждого пользователя и хранить их в базе данных, но кроме того, эта система выглядит довольно безопасно. (Не зная деталей сервера).

EDIT:

Теоретически multihashing строки увеличивает вероятность хэша столкновения, но я ничего надежного, который говорит, что это практический риск не найден.

+2

+1 для предложения уникального хэша для каждого пользователя. –

Смежные вопросы