Invece di creare un generatore di sale separato per ogni utente, non posso semplicemente usare il loro nome utente come sale? Sarebbe unico per tutti, e raggiunge lo scopo dei sali.
<?php
$hashedpass = sha1($username.$password)
>?
Se il nome utente è troppo breve per essere usato come sale, posso semplicemente aggiungere una stringa globale al nome utente.
$salt =$username.'asdf1234'
$hashedpass = sha1($salt.$password)
Questo sarebbe sufficiente per la sicurezza? Crea ancora un sale unico per ogni utente e impedisce gli attacchi della tabella arcobaleno.