powinienem użyć urandom lub openssl_random_pseudo_bytes?

Zajmuję się tworzeniem witryny w php 5.4 i zastanawiałem się, co jest lepsze do użycia losowej soli do zabezpieczenia hasłem?

$salt = sha1(openssl_random_pseudo_bytes(23));

lub

$seed = '';
$a = @fopen('/dev/urandom','rb');
$seed .= @fread($a,23);
$salt = sha1(seed);

czy powinienem po prostu iść z:

$salt =  openssl_random_pseudo_bytes(40);

lub

$salt = '';
$a = @fopen('/dev/urandom','rb');
$salt .= @fread($a,23);

questionAnswers(2)

yourAnswerToTheQuestion