密码更改后,ProtectedData.Unprotect(DPAPI)停止工作

时间:2011-01-21 05:58:09

标签: c#

假设我加密数据并将其写入如下文件:

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);

现在,当我在对Protect和Unprotect的调用之间更改Windows密码时,Unprotect将抛出异常。我确实希望将加密数据链接到我的用户帐户,但我也希望它能够在密码更改后继续使用。

我想我必须将数据传递给Windows,而不是将其写入我自己的文件,以便Windows可以在密码更改时对其进行重新加密。我只是找不到告诉我如何的文档。有谁知道吗?

1 个答案:

答案 0 :(得分:12)

如何更改密码?使用正常程序并指定旧密码应该与ProtectedData一起使用,而在计算机管理下设置新密码则不行。

Set Password dialog with warning