Estoy ayudando a mi amigo con el hashing de sus contraseñas, y tengo una pregunta: ¿Debería usar una cadena secreta como salt para el hashing o es mejor que cada usuario tenga su propia sal para el hashing?
Considera estos tres hashes:
hash("secretKey777" + password);
hash("secretKey777" + username + password);
hash(username + password);
¿Cuál es el más difícil de romper y el más seguro?
Creo que es mejor usar hash("secretKey777" + username + password);
porque para cada usuario no solo tiene "secretKey777" como una sal, sino también su propio nombre de usuario. En el caso de un código que contenga las filtraciones de las contraseñas, no habrá ningún ataque en todos los hashes a la vez, cada uno tendrá su propia sal única.