No es posible contraseñas "unhash" (al menos no en un modo general, eficiente y fiable - que pueden adivinar algunas contraseñas, eso es lo que los atacantes hacen, y que desea migrar de MD5, precisamente porque los atacantes puede tener cierto éxito en esto). Por lo tanto, la migración se extenderá a lo largo del tiempo: algunas contraseñas se correlacionarán con MD5, otras con SHA-256. Cuando se va a verificar una contraseña:
- Si se conoce el SHA-256 de esa contraseña, se utiliza SHA-256. Esta contraseña ya se ha migrado.
- De lo contrario, MD5 se utiliza para verificar la contraseña. Si coincide, la contraseña es buena, y, ya que la aplicación conoce la contraseña en ese momento, la aplicación también hash la contraseña con SHA-256 y reemplaza el hash MD5 con el hash SHA-256 en la base de datos.
Por lo tanto, las contraseñas se migran dinámicamente; Para deshacerte completamente de MD5, tienes que esperar mucho tiempo y/o destruir cuentas a las que no se ha accedido durante mucho tiempo. Necesita poder distinguir un hash MD5 de un hash SHA-256, lo que es fácil ya que tienen distintos tamaños (16 bytes para MD5, 32 bytes para SHA-256). También podría agregar una bandera o cualquier otro truco similar.
Tenga en cuenta que las contraseñas hashing con una aplicación única prima de una función hash es una manera bastante pésimo de hacerlo, la seguridad-sabia, y la sustitución de MD5 con SHA-256 no realmente mejorar las cosas. Tiene contraseñas hash para que un atacante que obtenga acceso de lectura a la base de datos no aprenda las contraseñas. Para realmente evitar que el atacante adivine las contraseñas, también necesita "sales" (datos aleatorios por contraseña, almacenados junto con la contraseña hash) y una función lenta de hash (es decir, miles, posiblemente millones, de la función hash anidada invocaciones). Ver this answer para más detalles. La respuesta corta: ya que está visualizando la migración, haga lo más inteligente y migre a bcrypt, no a SHA-256 (consulte that answer en security.stackexchange).
No creo que eso sea posible. – SLaks