如何将DPAPI密钥重置到密钥环中



我刚开始使用DPAPI,所以这是我在应用程序上搞砸的事情,因为我一直在工作笔记本电脑和个人桌面之间重新部署,所以现在DPAPI用于保护数据的密钥在不同环境之间发生了变化。

现在我得到的错误是钥匙不在钥匙圈里。

我找到了这个答案,其中提供的链接讨论了配置密钥存储,因此我更新了代码以将密钥持久化到文件系统(同时我等待sysadmin返回,以便他可以在azure上设置blob存储作为替代方案(,无论如何,这对dev来说都应该很好。

var path = this.Environment.ContentRootPath + "/Data/Keys/";
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(path));

我可以看到正在创建的密钥文件,但错误仍然存在,因为我没有应用程序正在查找的密钥。

那么,我如何让它在这里生成/使用/查找新密钥呢?

奇怪的是,完全重新初始化应用程序的数据库似乎解决了问题。

我的猜测是,这与我存储在其中的加密值(DPAPIIDataProtector.Protect()输出值(有关。具体来说,这些值是用我认为是应用程序报告的密钥加密的,但找不到。

使用新数据重新初始化数据库后,一切都如预期的那样工作。

最新更新