simple sha1cryptoserviceprovider password example encrypt decrypt c# security encryption passwords

c# - sha1cryptoserviceprovider - Recuperación y almacenamiento de contraseñas



simple encryption c# (1)

En mi aplicación, tengo que hacer llamadas repetidas a los servicios web que requieren autenticación. Los usuarios no desean ingresar repetidamente información de autenticación (nombre de usuario y contraseña).

¿Existe una forma segura de almacenar la contraseña al menos durante la sesión que está ejecutando la aplicación, por lo que el usuario debe ingresar los datos solo una vez?

Por el momento, guardo la contraseña en la memoria y la encripto después de ingresar y descifrarla cuando se usa para la llamada de servicio. Pero me siento un poco incómodo con eso. ¿Es esta una forma recomendada de manejar ese tipo de datos?

¿Qué hay de guardar una contraseña en una base de datos para usarla en varias sesiones? ¿Hay alguna manera recomendada de manejar eso? Escuché de bcrypt y pbkdf2. Pero solo son para propósitos hash y para comparar una contraseña ingresada, no para usar la contraseña "descifrada" nuevamente.

¿O sería un mejor enfoque utilizar un caché de contraseñas externo, como keepass (o lo que sea que se pueda usar)?


Para el almacenamiento en memoria, use la clase SecureString o NetworkCredentials , que usa SecureString internamente.

Para el almacenamiento persistente, encripte la contraseña usando la API de protección de datos . Encriptará con la clave que solo es accesible para el usuario actual de Windows en esta computadora.