Использование Always Encrypted of SQL Server из .NET Core 2.1 - PullRequest
0 голосов
/ 20 октября 2018

Мне известно, что Microsoft еще не определила план поддержки Always Encrypted из ядра.Однако это поддерживается классической .NET Framework (начиная с версии 4.5).Использование Always Encrypted в нашем проекте Core 2.1 ограничено двумя простыми запросами, и мы готовы использовать альтернативные маршруты для его использования, кроме понижения версии Core 2.1.

Существует много удаленных способов решения этих проблем, но они включаютудаленное взаимодействие (WCF или REST для другого классического .NET) или через Service Fabric Actor (мы использовали это раньше).

Есть ли какой-нибудь чистый способ сделать это?Подключение через ODBC, например, для этих двух запросов или что-то в этом роде?

NB. Мы работаем под Windows.

1 Ответ

0 голосов
/ 02 ноября 2018

Согласно Microsoft Docs последние ODBC драйверы поддерживают Always Encrypted.Следующий код работает.

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();
                }
            }
        }
    }
}

enter image description here

enter image description here

Если я удаляю "ColumnEncryption =Включенный "из строки подключения, вывод становится" SSN: System.Byte [] ", то есть SSN не расшифровывается.

Надеюсь, это поможет!

...