我需要从本地数据库中存储和检索敏感数据 - 此数据由 Web 应用程序使用。
为了保护上述数据,我选择使用ProtectedData
该类。
IIS 应用程序正在使用特定的 AD 用户(高级设置中的身份属性)运行。
在我执行 IISRESET 之前,一切正常 - 在这一点上,似乎为了ProtectedData
课程的目的而更改了身份,并且我留下了无法解密的数据 - 我遇到了一个Key not valid for use in specified state
异常。
这是我正在使用的代码:
static public string Encrypt(string data)
{
var encryptedData = ProtectedData.Protect(System.Text.Encoding.UTF8.GetBytes(data), entropy, DataProtectionScope.CurrentUser);
return Convert.ToBase64String(encryptedData);
}
static public string Decrypt(string base64string)
{
var encryptedData = Convert.FromBase64String(base64string);
return System.Text.Encoding.UTF8.GetString(ProtectedData.Unprotect(encryptedData, entropy, DataProtectionScope.CurrentUser));
}
这entropy
对于我的应用程序来说显然是静态的。
这是怎么回事?DataProtectionScope.CurrentUser
顾名思义,我的印象是将使用当前用户——据我所知,这应该是应用程序池标识。为什么在我执行 IISRESET 时这似乎发生了变化?