Sin embargo, ahora estoy tratando de usar "Escriba la clave de cifrado cuando
iniciar "y guardarla en una cookie de sesión (encriptada) pero no lo hago
saber cómo decirle al usuario si su clave es correcta o no.
¿Hay alguna razón por la que esté almacenando este lado del cliente? La cookie se enviará con cada solicitud, y el cifrado aquí parece incorrecto porque necesitará la clave de almacenamiento para este cifrado adicional en algún lugar. Cualquier persona que tome esta cookie tendrá efectivamente la contraseña de descifrado indefinidamente (la contraseña original cifrada se convierte efectivamente en la contraseña). ¿Podría almacenarse en el lado de la sesión del servidor, la contraseña estaría menos expuesta?
De todos modos, eso fue un hecho a un lado, ahora pasa a tu pregunta principal ... Si puedes almacenar las contraseñas del lado del servidor, puedes usar bcrypt y luego compare la contraseña ingresada con la versión de hash en la entrada de contraseña.
Aparte de eso, asegúrate de utilizar un algoritmo de estiramiento de teclas para convertir las contraseñas más débiles ingresadas por el usuario en claves seguras a través de hashing lento iterativo. La fuerza de bits de las contraseñas de usuario generalmente no es suficiente para protegerse contra un ataque de fuerza bruta de datos encriptados. Utilice PBKDF2.