Estoy trabajando en un sistema que ha estado mezclando contraseñas de usuario con MD5 (sin sal). Quiero almacenar las contraseñas de forma más segura con SHA-512 y una sal.¿Usa SHA-512 y salt para hash una contraseña hash MD5?
Si bien esto es bastante fácil de implementar para futuras contraseñas, también me gustaría actualizar las contraseñas hash MD5 existentes, preferiblemente sin forzar a todos los usuarios a cambiar sus contraseñas. Mi idea es usar SHA-512 y una sal apropiada para modificar el hash MD5 existente. También puedo establecer un indicador en la base de datos que indique qué contraseñas fueron heredadas del texto sin formato, y cuáles fueron codificadas a partir de un hash MD5. O podría probar ambos al autenticar usuarios. O incluso simplemente hash nuevas contraseñas con MD5 y luego SHA-512/salt, por lo que pueden tratarse igual que las contraseñas antiguas.
Programáticamente, no creo que esto sea un problema, pero no sé lo suficiente sobre encriptación/hash para saber si estoy comprometiendo la calidad del hash de alguna manera mediante la aplicación de un SHA-512/sal hash a una contraseña que ya tenía MD5 hash. Mi primer instinto es que, en todo caso, sería aún más fuerte, una extensión de tecla muy ligera.
Mi segundo instinto es que realmente no sé de lo que estoy hablando, así que será mejor que me aconseje. ¿Alguna idea?
SHA-512 ofrecerá muy poca mejora sobre MD5 (p. Ej .: 'MD5 (salt + password)' es prácticamente equivalente a 'SHA512 (salt + password)'). Las funciones hash de propósito general como MD5 y la familia SHA ** no se han diseñado para almacenar contraseñas. Usa bcrypt. – NullUserException
Muy cierto. De hecho, tenía la intención de hacer un estiramiento clave, pero no lo dejé claro en mi pregunta. Terminé usando PBKDF2 en lugar de implementar ingenuamente mi propio algoritmo de estiramiento de teclas. –