ProtectedData.Unprotect (DPAPI) перестает работать после смены пароля

предположим, я зашифрую данные и запишу их в такой файл:

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

расшифровка так же проста:

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

теперь, когда я меняю пароль windows между вызовами для защиты и Unprotect, Unprotect выдаст исключение. Я хочу, чтобы зашифрованные данные были связаны с моей учетной записью пользователя, но я также хочу, чтобы он пережил изменения пароля.

Я думаю, что я должен передать данные в Windows, а не записывать их в свой собственный файл, так что Windows может повторно зашифровать его при изменении пароля. Я просто не могу найти документацию, которая рассказывает мне, как. Кто-нибудь знает?

1 ответов


Как изменить пароль? Используя обычную процедуру и указав старый пароль, следует работать с ProtectedData, при установке нового пароля под управлением компьютера не будет.

Set Password dialog with warning