小编r_w*_*unt的帖子

SQL列级加密的EF Core解密

我和我的团队正在尝试从打开了列级加密的数据库(Azure SQL)解密值;证书存储在密钥保管库中。

预期结果:

var someLinqQuery = _contex.Users.First();
someLinqQuery.SSN = "000-00-0000";
Run Code Online (Sandbox Code Playgroud)

实际结果:

var someLinqQuery = _context.Users.First();
someLinqQuery.SSN = "the var binary (encrypted) version of the ssn";
Run Code Online (Sandbox Code Playgroud)

FWIW,这在使用原始 sql 时可以正常工作。但我们希望选择不这样做,并加密更多数据。

我们这里还有天蓝色的密钥库代码:

 //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, …
Run Code Online (Sandbox Code Playgroud)

linq encryption entity-framework-core .net-core azure-sql-database

4
推荐指数
1
解决办法
3079
查看次数