En mi proyecto, estoy usando BCryptPasswordEncoder como una forma de codificar mis contraseñas. Mientras no apague mi máquina, todo funciona bien, sin embargo, cuando vuelvo a ejecutar mi código, BCryptpasswordEncoder también se reinicializa, restableciendo su hash, haciendo que el método de coincidencias () no funcione con las contraseñas en mi almacenamiento, que se crearon con el hash anterior.
Aquí está el fragmento de código del que estoy hablando:
PasswordEncoder encoder = new BCryptPasswordEncoder(); User u = this.dataSource.getUserByUsername(username); String passwordEncoded = encoder.encode(password); if (u == null) { return "No such user"; } else { if (encoder.matches(password, u.getPassword())) { return passwordEncoded; } else { return "Incorrect password"; } }Sé que mantener un hash consistente anularía el propósito de la codificación en general, pero tal como está ahora, cerrar cualquier cosa hace que todas mis entradas de usuario anteriores en mi repositorio sean inútiles. ¿Hay algo que pueda sobre esto?
BCryptpasswordEncoder automáticamente las contraseñas. La sal específica que agregan a la contraseña se genera aleatoriamente cada vez que se inicializa.
Cuando reinicializa BCryptpasswordEncoder , está generando una nueva sal para agregar a la contraseña, por lo que, naturalmente, los resultados serían diferentes.
Puede averiguar cómo superar este problema aquí