Pregunta

bCrypt's javadoc tiene este código para encriptar una contraseña :

String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 

Para verificar si una contraseña de texto sin formato coincide con una que se ha cifrado previamente, utilice el método checkpw:

if (BCrypt.checkpw(candidate_password, stored_hash))
    System.out.println("It matches");
else
    System.out.println("It does not match");

Estos fragmentos de código implican que la sal generada al azar se tira a la basura. ¿Es este el caso, o es solo un fragmento de código engañoso?

¿Fue útil?

Solución

La sal se incorpora al hash (codificada en un formato de estilo base64).

Por ejemplo, en las contraseñas tradicionales de Unix, la sal se almacenaba como los dos primeros caracteres de la contraseña. Los caracteres restantes representaban el valor hash. La función de verificación lo sabe y separa el hash para recuperar la sal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top