2013-07-24 2 views
1

Я генерируя соль для PHP crypt функции как этогоPHP поколение крипты соли

$hashSalt = substr(md5(time().uniqid(rand())),0, 22); 

$hashedPassword = crypt('SmithJohn', '$2a$07$'.$hashSalt.'$'); 

Из моего понимания это хороший метод. Что ты думаешь?

+0

можно дублировать из [Произвольное генерирование случайных чисел в PHP] (http://stackoverflow.com/questions/1182584/secure- random-number-generation-in-php) – deceze

ответ

2

Слишком сложный и не обязательно случайный. Используйте источники, которые сделаны для этой цели:

mcrypt_create_iv($salt_len, MCRYPT_DEV_URANDOM) 

или

openssl_random_pseudo_bytes($salt_len) 

или

$buffer = ''; 
$f = fopen('/dev/urandom', 'r'); 
$read = strlen($buffer); 
while ($read < $salt_len) { 
    $buffer .= fread($f, $salt_len - $read); 
    $read = strlen($buffer); 
} 
fclose($f); 

Предпочтительно все используют в качестве нескольких слоев запасного варианта, как показано на https://github.com/ircmaxell/password_compat/blob/master/lib/password.php#L84

+0

Почему нам здесь нужно fopen? – phpsessionid

+1

[Этот ответ] (http://stackoverflow.com/questions/1182584/secure-random-number-generation-in-php/1551064#1551064) содержит более подробную информацию об обеспечении генерации случайных чисел в PHP. – ntoskrnl

+1

@phpsessionid Поскольку это резервный метод для чтения из '/ dev/urandom'. Если вы не знаете, что это такое, см. Http://en.wikipedia.org/wiki//dev/urandom. – deceze

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

  • Нет связанных вопросов^_^