Necesito almacenar datos encriptados (algunas cadenas pequeñas) entre ejecuciones de aplicaciones. No deseo que el usuario proporcione una frase de contraseña cada vez que lance la aplicación. Es decir. después de todo, se trata de almacenar de forma segura las claves de cifrado.Almacenamiento persistente de datos cifrados usando .Net
Estaba buscando en RSACryptoServiceProvider y utilizando PersistentKeyInCsp, pero no estoy seguro de cómo funciona. ¿El contenedor de claves es persistente entre ejecuciones de aplicaciones o reinicios de máquinas? En caso afirmativo, ¿es específico del usuario o específico de la máquina? Es decir. si almaceno mis datos encriptados en el perfil itinerante del usuario, ¿puedo descifrar los datos si el usuario inicia sesión en una máquina diferente?
Si lo anterior no funciona, ¿cuáles son mis opciones? (Tengo que ocuparme de los perfiles itinerantes).
Sólo para la posteridad, que tendrá que buscar en otro código para manejar la persistencia en alguna parte más "público" (al menos en su intranet, por ejemplo) para que puedan llegar a ella desde otras máquinas Normalmente puede usar Environment.SpecialFolder.ApplicationData para obtener una ubicación específica de máquina y usuario. –
Gracias por la respuesta, esto debería funcionar. ¿Tienes alguna idea de cómo se puede hacer esto en 1.1.? ProtectedData es nuevo para .Net 2.0 –
Para usar DPAPI en .NET 1.1, deberá usar P/Invoke.Vea aquí para un recorrido bastante completo: http://msdn.microsoft.com/en-us/library/aa302402.aspx –