2011-01-21 20 views
6

Supongamos que cifrar los datos y escribir en un archivo de la siguiente manera:ProtectedData.Unprotect (DPAPI) deja de funcionar después de cambio de contraseña

byte[] encrypted = 
    ProtectedData.Protect(plain, null, DataProtectionScope.CurrentUser); 
File.WriteAllBytes(filename, encrypted); 

Decodificación es tan sencillo:

byte[] encrypted = File.ReadAllBytes(filename); 
byte[] decrypted = 
    ProtectedData.Unprotect(encrypted, null, DataProtectionScope.CurrentUser); 

Ahora cuando cambio mi contraseña de Windows entre las llamadas a Proteger y Desproteger, Desproteger lanzará una excepción. Quiero que los datos cifrados se vinculen a mi cuenta de usuario, pero también quiero que sobrevivan a los cambios de contraseña.

Supongo que tengo que pasar los datos a Windows en lugar de escribirlos en mi propio archivo, para que Windows pueda volver a cifrarlo en los cambios de contraseña. Simplemente no puedo encontrar la documentación que me dice cómo. ¿Alguien sabe?

Respuesta

12

How ¿cambia la contraseña? El uso del procedimiento normal y la especificación de la contraseña anterior deberían funcionar con ProtectedData, mientras que establecer una nueva contraseña en la administración de la computadora no funcionaría.

Set Password dialog with warning

+0

¡Eso fue rápido! Gracias amigo, ese fue el problema. Si dejo que el usuario cambie su propia contraseña, funciona. –

+0

Q rápido si reinicio la contraseña de la cuenta, y luego la vuelvo a configurar de nuevo a su contraseña anterior, Desproteger comenzaría a funcionar de nuevo? – Shane

+0

El diálogo indica _ pérdida reversible_, por lo que no funcionaría. – sisve

Cuestiones relacionadas