Credo che ci siano alcuni malintesi che devono essere corretti. Prima di tutto, un attacco del dizionario è un attacco a forza bruta, ma con un'ipotesi particolare. Nel caso di password hash, si presume che la password sia una parola del dizionario (o qualche sua mutazione) e quindi ricerchi ogni parola del dizionario, la blocca e poi la confronta con l'hash rubato per trovare un partita.
Quando il tuo amico ha detto "attacco al dizionario" intendeva probabilmente tavoli arcobaleno , e un buon sale protegge davvero contro l'arcobaleno tabelle (pre-calcolando una gigantesca lista di hash per un rapido confronto subito dopo aver rubato gli hash), ma quasi nulla ha a che fare con gli attacchi di dizionario. La corretta salatura ha anche altri vantaggi , come impedire che l'attacco provochi due password contemporaneamente.
Detto questo, sono anche preoccupato di quanto sia veloce il tuo attuale schema di hashing. Consiglio vivamente di imparare come utilizzare password di hash in sicurezza usando schemi lenti che sono particolarmente progettato per questo scopo, come BCrypt o PBKDF2 .