Is this more or less safe than just adding the username with the password: sha2(username.password).
Non c'è alcuna differenza reale. Sia l'uso di un nome utente semplice che di md5(username)
sono idee sbagliate e mostrano una comprensione mancante di ciò che viene usato per il sale e di come generarlo e memorizzarlo. Un sale viene utilizzato per aumentare drasticamente lo spazio di ricerca per l'utente malintenzionato in quanto le stesse password produrranno diverse password hash e quindi pre-calcolano molte password hash per rendere facile il confronto non fattibile.
Se si utilizza un sale non casuale derivato dal nome utente (o dallo stesso nome utente) si aumenta comunque lo spazio di ricerca ma non tanto quanto un puro sale casuale verrà utilizzato. Dal momento che il sale per una password hash non è un segreto in ogni caso (vedi Come conservare il sale? ) non ci sono vantaggi nell'usare un sale non casuale derivato dal nome utente rispetto a un sale casuale, ma ci sono solo ovvi svantaggi. Ma, per tornare a username
rispetto a md5(username)
- non c'è praticamente nessuna differenza nell'aumento dello spazio di ricerca perché la probabilità di nomi utente diversi che hanno come risultato lo stesso hash (cioè collisione) è praticamente zero. Ancora, non usare nessuno di questi, ma usa un sale casuale.
A parte il fatto che usare sha2(salt,username)
per calcolare l'hash della password è una cattiva idea perché SHA-2 è veloce e quindi gli attacchi a forza bruta sono facili rispetto all'utilizzo di un hash più lento. Vedi Qual è il motivo specifico per preferire bcrypt o PBKDF2 su SHA256-crypt negli hash delle password? per ulteriori dettagli.
Nel complesso, per favore non inventare ancora un altro modo per memorizzare le password. Studia invece Come password di hash sicure? per scoprire come farlo correttamente e anche per le spiegazioni sul perché dovrebbe essere fatto in questo modo.