Tengo una aplicación antigua que tiene contraseñas de usuario almacenadas en la base de datos con un hash MD5. Me gustaría reemplazar esto con algo de la familia SHA-2.¿Cómo convierto hash de contraseñas de MD5 a SHA?
He pensado en dos formas posibles de lograr esto, pero ambas parecen bastante torpes.
1) Agregue un campo "bandera" booleano. La primera vez que el usuario se autentique después de esto, reemplace el hash de contraseña MD5 con el hash de contraseña SHA y configure el indicador. Luego puedo verificar la bandera para ver si el hash de la contraseña se ha convertido.
2) Agregue un segundo campo de contraseña para almacenar el hash SHA. La primera vez que el usuario se autentique después de esto, configure la contraseña con SHA y guárdela en el nuevo campo (probablemente elimine su hash MD5 al mismo tiempo). Entonces puedo verificar si el campo SHA tiene un valor; esto esencialmente se convierte en mi bandera.
En cualquier caso, la autenticación MD5 debería permanecer en su lugar por algún tiempo para cualquier usuario que inicie sesión con poca frecuencia. Y los usuarios que ya no estén activos nunca serán cambiados a SHA.
¿Hay una mejor manera de hacerlo?
su hijo de dos las soluciones se ven bien para mí – wtaniguchi
Y estoy mejorando la respuesta de Ned, él tiene un buen punto allí. – wtaniguchi
En cuanto a los usuarios que nunca cambian, lo consideraría después de cambiar un cierto porcentaje de personas y haber pasado el tiempo suficiente para deshacerse de los hash MD5. Las personas que no hayan iniciado sesión durante ese período de tiempo deberán restablecer sus contraseñas cuando vuelvan a conectarse. Si o no (y cuándo) eso es aceptable es una decisión comercial. –