En lugar de crear un generador de sal por separado para cada usuario, ¿no puedo usar su nombre de usuario como sal? Sería único para todos y lograría el propósito de las sales.
<?php
$hashedpass = sha1($username.$password)
>?
Si el nombre de usuario es demasiado corto para ser usado como un salt, puedo agregar una cadena global al nombre de usuario.
$salt =$username.'asdf1234'
$hashedpass = sha1($salt.$password)
¿Sería esto suficiente para la seguridad? Todavía crea una sal única para cada usuario y evita los ataques de tabla arco iris.