Se un sale è solo una sequenza casuale di caratteri, qual è lo scopo di cambiare gli utenti ogni volta che cambiano la password?
Da una prospettiva di codifica è in realtà più difficile e meno efficiente ottenere il sale esistente e riutilizzarlo piuttosto che generarne uno nuovo. L'utilizzo del vecchio sale richiede un round trip nel database o nel file e richiede una maggiore complessità e manutenzione del codice semplicemente creando una combinazione di nome + salo completamente nuova, che devi avere il codice per quando viene impostata la prima password.
In altre parole, è più facile, più veloce e più sicuro usare semplicemente lo stesso codice che hai già creato per creare un nuovo salt, quindi perché fare qualcos'altro? Dal punto di vista della sicurezza, meno codice da mantenere è più sicuro.
Se l'attaccante ha ottenuto la vecchia password e sale, potrebbe calcolare una tabella arcobaleno, un dizionario o simili per quel sale. Se il sale non cambia, quel lavoro sarebbe comunque valido anche se la password è cambiata. La modifica del sale costringe l'attaccante a ricominciare da capo.
Forse non è un vantaggio enorme, ma d'altra parte il costo di cambiare il sale è praticamente zero, quindi non c'è motivo per non farlo.
Se un hacker ha trovato un database di username + salt + hash e vuole trovare le password in genere, proveranno un numero enorme di potenziali password per vari utenti; troppi per memorizzare gli hash calcolati.
Se un hacker insegue te e nessuno di te, potrebbero essere in grado di memorizzare tutti gli hash calcolati e, se la password cambia, potrebbero già avere l'hash nella loro tabella e crackare immediatamente la password. Questo è se l'hacker può ottenere di nuovo lo stesso database.
Quindi, da un lato, la modifica del sale è necessaria solo per gli utenti che sono specificatamente targettizzati. D'altra parte, penserei che cambiare il sale dovrebbe essere facile, quindi non c'è ragione di non cambiarlo.