2011-01-21 24 views
6

Supponiamo che io crittografare i dati e scrivere in un file in questo modo:ProtectedData.Unprotect (DPAPI) smette di funzionare dopo la modifica della password

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

decrittografia è così semplice:

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

Ora quando cambio la mia password di windows tra le chiamate a Protect e Unprotect, Unprotect genererà un'eccezione. Voglio che i dati crittografati siano collegati al mio account utente, ma voglio anche che sopravviva alle modifiche della password.

Suppongo di dover passare i dati a Windows invece di scriverli sul mio file, in modo che Windows possa ricodificarlo nuovamente con le modifiche della password. Non riesco a trovare la documentazione che mi dice come. Qualcuno sa?

risposta

12

Come si modifica la password?? L'utilizzo della normale procedura e la specifica della vecchia password dovrebbero funzionare con ProtectedData, mentre l'impostazione di una nuova password nella gestione del computer non lo farebbe.

Set Password dialog with warning

+0

È stato veloce! Grazie amico, questo era il problema. Se lascio che l'utente cambi la propria password, funziona. –

+0

Rapido D se ho ripristinato la password dell'account, quindi in seguito la reimposta nuovamente alla sua vecchia password, Unprotect potrebbe ricominciare a funzionare? – Shane

+0

La finestra di dialogo indica la perdita inversa, quindi non funzionerebbe. – sisve

Problemi correlati