Si una sal no se almacena junto con la contraseña de hash en la base de datos, ¿es posible que la contraseña esté incluida?
Lo pregunto porque en un sistema en el que estoy trabajando solo hay una columna de contraseña, pero cuando reviso el código, parece que quien haya escrito esto está intentando saltear la contraseña.
Por lo que entendí, las contraseñas / sales se deben almacenar como a continuación:
email | password (hashed) | salt (not hashed)
[email protected] | de898928393a893sfe7f98s7 | S#ne3
Entonces, cuando un usuario se registre con su contraseña ("froggy" en el ejemplo a continuación) iría de esta forma:
//Generate salt (S#ne3 for this example)
//encrypt ("froggy" + "S#ne3")
//Save encrypted pw + salt to database AND save unencrypted salt to database
Luego, cuando el usuario intentara iniciar sesión con "froggy", haría algo como esto:
//Query database for user's record. Store this in curUser object
//Check to see if the following match: encrypt("froggy" + curUser.salt) == curUser.password
¿Esto suena bien? Si estoy en lo cierto, ¿es seguro asumir que las contraseñas de este sistema no están sujetas a sal?