¿Es esto más o menos seguro que simplemente agregar el nombre de usuario con la contraseña: sha2 (username.password).
No hay diferencia real. Tanto el uso de un nombre de usuario simple como md5(username)
son malas ideas y muestran una comprensión faltante de para qué se usa la sal y cómo generarla y almacenarla. Una sal se usa para aumentar drásticamente el espacio de búsqueda para el atacante, ya que las mismas contraseñas darán como resultado diferentes contraseñas con hash y, por lo tanto, el procesamiento previo de muchas contraseñas con hash para una comparación fácil se vuelve inviable.
Si usa un sal no aleatorio derivado del nombre de usuario (o el nombre de usuario mismo) todavía aumenta el espacio de búsqueda pero no tanto como se usaría un sal aleatorio puro. Ya que la sal para una contraseña con hash no es un secreto de todos modos (consulte ¿Cómo almacenar sal? ) no hay ventajas en el uso de una sal no aleatoria derivada del nombre de usuario en comparación con una sal aleatoria, pero solo existen desventajas obvias. Pero, para volver a username
vs. md5(username)
, prácticamente no hay diferencia en el aumento del espacio de búsqueda porque la probabilidad de que diferentes nombres de usuario resulten en el mismo hash (es decir, colisión) es prácticamente cero. Aún así, no uses ninguno de estos, sino un sal aleatorio.
Además de usar sha2(salt,username)
para calcular el hash de la contraseña, también es una mala idea porque SHA-2 es rápido y, por lo tanto, los ataques de fuerza bruta son fáciles en comparación con usar un hash más lento. Consulte ¿Cuál es la razón específica para preferir bcrypt o PBKDF2 sobre SHA256-crypt en hashes de contraseña? para más detalles.
En general, no inventes otra forma de almacenar contraseñas. En su lugar, estudie ¿Cómo hash seguro las contraseñas? para saber cómo hacerlo correctamente y también para explicaciones de por qué debería hacerse de esta manera.