I tener otra sugerencia para migrar el hash de contraseña de SHA1 a SHA256 inmediatamente sin esperar a que el usuario vuelva a visitar el sitio para volver a configurar la contraseña. El cambio será una migración de hash de contraseña de un solo uso y cambiará a su función de validación de inicio de sesión.
Suponga que su hash de la contraseña se generan mediante la función: contraseña + sal [SHA1] -> Hash-SHA1
migrar a SHA256, es posible convertir el hash de la contraseña utilizando el siguiente algoritmo:
Hash -sha1 + salt [Sha256] -> Hash-sha256 (La sal se utiliza para aumentar la complejidad de la entrada.)
Dependiendo del valor aceptable de su función sha256, puede considerar codificar el Hash-sha1 en base64 para ascii imprimible.
Para su función de validación de inicio de sesión, la contraseña debe algoritmo hash utilizando el siguiente algoritmo:
contraseña + sal [SHA1] -> hash SHA1 + sal [sha 256] -> hash SHA256
La desventaja es hash dos veces (use algo de tiempo de CPU) pero simplifica la migración y mejora la seguridad.
Creo que [el principio de Kerckhoff] (https://en.wikipedia.org/wiki/Kerckhoffs%27s_principle) se aplica al motivo por el cual esta es una mala idea: "seguridad a través de la oscuridad". La contraseña de base todavía se almacena como SHA1. Si vas a hacer algo como esto, entonces HMAC probablemente tenga sentido. –