在ASP.NET Core 3.1框架中使用IDataProtectionProvider时如何指定加密密钥?

时间:2020-09-28 20:59:34

标签: c# asp.net-core encryption asp.net-core-3.1

我在ASP.NET Core 3.1框架的顶部有一个用C#编写的项目。

在存储某些数据之前,我需要对其进行加密。当读取相同的数据时,我想对其解密。我找到了一种使用IDataProtectionProvider的方法。但是,加密密钥似乎存储在本地计算机上。

如何控制密钥存放在哪里?另外,有没有办法控制密钥应该是什么?

1 个答案:

答案 0 :(得分:1)

“使用IDataProtectionProvider的组件必须将唯一用途的参数传递给CreateProtector方法。”

从主要文档开始-https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/purpose-strings?view=aspnetcore-3.1

看起来像这样。 (source

_protectorTest = provider.CreateProtector("TestProtector");

假设您以正确的方式使用IDataProtectionProvider,则目的字符串在您的控制之下。您将其放入您的项目中。

对于简单的情况,您可以将此字符串保留在自己的项目中,因此目的字符串可随时使用。当然,这不是您理想中想要的。

对于更现实的情况,您可以考虑使用以下任何选项来正确存储和检索目的密钥。

  • ProtectKeysWithAzureKeyVault
  • PersistKeysToFileSystem

更多详细信息-https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-3.1

相关问题