En una discusión reciente, alguien mencionó el siguiente esquema de hashing:
passHash = sha256(password)
saltedHash = sha256(passHash+passHash.substr(-10)
finalHash = sha256(secret+saltedHash)
La contraseña está en hash, luego en hash nuevamente con los últimos 10 caracteres del hash anterior como 'sal'. Finalmente, se adjunta un secreto y todo se revisa nuevamente antes de guardarlo en la base de datos.
¿Qué tan seguro es esto? Sé que contraseñas iguales tendrán el mismo FinalHash. Pero aparte de eso, ¿qué tan malo es usar parte de la contraseña hash como sal? ¿Tener una sal secreta ayuda más tarde? ¿Qué tan malo es tener solo 3 iteraciones de sha256 en lugar de unos pocos miles? ¿Hay un ataque fácil que demuestre que este esquema de hash es una tontería?