使用 .NET Core 2.1 中的 SQL Server 的 Always Encrypted

2024-01-06

我知道 Microsoft 尚未指定任何在 Core 内支持 Always Encrypted 的计划。 但是,经典 .NET Framework(4.5 及以上版本)支持这一点。 我们的 Core 2.1 项目对 Always Encrypted 的使用仅限于两​​个简单的查询,除了从 Core 2.1 降级之外,我们愿意采取其他途径来使用它。

有许多远程方法可以解决这些问题,但它们涉及远程处理(WCF 或另一个经典 .NET 的 REST)或通过 Service Fabric Actor(我们之前使用过)。

有没有干净的进程内方法来做到这一点?例如,通过 ODBC 连接这两个查询或类似的查询?

注意:我们在 Windows 上运行。


根据微软文档 https://learn.microsoft.com/en-us/sql/connect/odbc/using-always-encrypted-with-the-odbc-driver?view=sql-server-2017 latest ODBC https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017驱动程序支持始终加密。以下代码有效。

using System;
using System.Data.Odbc;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var connection = new OdbcConnection(
                "Driver={ODBC Driver 17 for SQL Server};DSN=SQL2016;Server={SQL2016};Trusted_Connection=yes;ColumnEncryption=Enabled;Database=AndreyTest;"))
            {
                using (var cmd = new OdbcCommand("select SSN from TestTable", connection))
                {
                    connection.Open();
                    Console.WriteLine("Connected");
                    Console.WriteLine("SSN: " + Convert.ToString(cmd.ExecuteScalar()));
                    Console.ReadLine();
                    connection.Close();
                }
            }
        }
    }
}

如果我从连接字符串中删除“ColumnEncryption=Enabled”,输出将变为“SSN:System.Byte[]”,即 SSN 未解密。

我希望这个能帮上忙!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .NET Core 2.1 中的 SQL Server 的 Always Encrypted 的相关文章

随机推荐