Necesito una forma segura de almacenar una contraseña en una base de datos, pero también necesito una forma de recuperar la contraseña original. Por supuesto, si este no fuera el caso, simplemente lo haría. Para solucionar este problema, se me ocurrió la siguiente solución, pero me gustaría saber si es segura.
Tengo una clave secreta en el servidor y otra clave secreta que se guarda en la aplicación del lado del cliente. Este último es diferente para cada usuario y se genera una nueva clave cada vez que un usuario inicia sesión.
La única vez que el servidor tendrá ambas claves es cuando un usuario realiza una solicitud y el servidor necesita obtener la contraseña sin procesar. Esto significa que cuando se infringen las contraseñas del servidor, las contraseñas siguen siendo seguras, ya que solo tienes la mitad del total de la clave, y como estoy usando AES 256, aún necesitas crackear 128 bits.
¿Está bien o me falta algo importante?
Editar: necesito usar la contraseña del cliente en llamadas a la API a servicios externos