我和我的团队正在尝试解密启用了列级加密并将证书存储在密钥保管库中的数据库(Azure SQL)中的值。
期望结果:
var someLinqQuery = _contex.Users.First();
someLinqQuery.SSN = "000-00-0000";
实际结果:
var someLinqQuery = _context.Users.First();
someLinqQuery.SSN = "the var binary (encrypted) version of the ssn";
就我所知,使用原始 SQL 的方法可以正常工作。但我们希望有其他选项,能够加密更多的数据。
另外,这里提供了 Azure KeyVault 代码:
//Key Vault Code Below
private static ClientCredential _clientCredential;
public static void InitializeAzureKeyVaultProvider()
{
if (!isActivated)
{
_clientCredential = new ClientCredential(_applicationId, _clientKey);
SqlColumnEncryptionAzureKeyVaultProvider azureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(GetToken);
Dictionary<string, SqlColumnEncryptionKeyStoreProvider> providers = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>
{
{ SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider }
};
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
isActivated = true;
}
}
public static async Task<string> GetToken(string authority, string resource, string scope)
{
var authContext = new AuthenticationContext(authority);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, _clientCredential);
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the access token");
}
AccessToken = result.AccessToken;
return result.AccessToken;
}
这段代码被加载在启动类中。我也将代码移动到应用程序的其他位置,结果相同。
我的问题是,在 .net core 2.1.x 和 EF core 2.1.x 中是否可以使用 LINQ? 我需要升级吗?
BitConverter.ToString
进行解密。 - Jim Xu