我正在尝试为数据库中的特定字段实施个人数据保护(有些是Identity
的一部分,有些是在自定义表上的),我似乎找不到任何有关如何使用的适当文档/示例。做吧。
我的主要想法是使用内置的.NET Core数据保护,然后将IDataProtectionProvider
注入到实体框架使用的IPersonalDataProtector
中。
services.AddDataProtection();
services.AddTransient<ILookupProtector, LookupProtector>();
services.AddTransient<IPersonalDataProtector, Protector>();
这是简单的实现
public class LookupProtector : ILookupProtector
{
private readonly IDataProtector dataProtector;
public LookupProtector(IDataProtectionProvider dataProtectionProvider)
{
dataProtector = dataProtectionProvider.CreateProtector("protector-key");
}
public string Protect(string keyId, string data)
{
return "";
}
public string Unprotect(string keyId, string data)
{
return "";
}
}
public class Protector : IPersonalDataProtector
{
private readonly IDataProtector dataProtector;
public Protector(IDataProtectionProvider dataProtectionProvider)
{
dataProtector = dataProtectionProvider.CreateProtector("protector-key");
}
public string Protect(string data)
{
return dataProtector.Protect(data);
}
public string Unprotect(string data)
{
return dataProtector.Unprotect(data);
}
}
现在,我不确定我为什么需要实现ILookupProtector
(否则会出错),如何使用此keyId
以及是否有人可以提供有关如何使用加密实现此问题的一般示例来自Azure Key Vault的密钥。