Шифрование SQL Server 2008 R2 - с помощью Entity Framework - PullRequest
5 голосов
/ 22 февраля 2012

Я хочу использовать шифрование базы данных в базе данных, к которой я подключаюсь, в моем приложении.Entity Framework.

Существует ли простой способ / лучшая практика, чтобы иметь возможность получать незашифрованные данные и записывать зашифрованные данные обратно в базу данных.Я не особо хочу редактировать edmx xml вручную, но изо всех сил пытаюсь найти некоторые ресурсы, которые подскажут мне, как этого добиться.

Я планирую использовать Symmetric Key и алгоритм тройного шифрования DES.

Ответы [ 2 ]

5 голосов
/ 22 февраля 2012

Что вы подразумеваете под шифрованием SQL Server 2008 R2 - это очень расплывчатый вопрос, потому что он имеет много значений.

Ваши общие параметры:

  • Прозрачное шифрование данных -Особенность SQL Server - вся база данных зашифрована на стороне SQL Server.Ваше приложение не должно изменяться, и оно должно работать с EF.
  • Шифрование на уровне ячейки - функция SQL Server - выбранные столбцы шифруются и сохраняются как varbinary.Для этого требуются специальные команды запроса и сохранения, поэтому вам придется использовать специализированные представления базы данных и хранимые процедуры для взаимодействия с вашей БД, если вы хотите использовать EF.Если вы не хотите использовать представления базы данных и хранимые процедуры, вам придется поддерживать EDMX вручную и записывать все эти команды SQL в его часть SSDL.
  • Шифрование, выполненное в вашем приложении - вы будете использовать ObjectMaterialized иSavingChanges события для самостоятельного управления дешифрованием и шифрованием.Вы, вероятно, сможете шифровать и дешифровать только строковые или двоичные данные, поскольку тип данных вашего свойства не должен изменяться (в случае строки вам придется хранить зашифрованное значение в виде строки base64).
0 голосов
/ 29 сентября 2013

Вы можете создать представление, которое возвращает дешифрованные данные.

Например:

CREATE VIEW [your_view_name] as
SELECT 
CONVERT(varchar(200),DECRYPTBYPASSPHRASE('[your_symmetric_key]', [encrypted_field])) As [encrypted_field],
FROM [your_table_name]

Затем добавьте ваше представление как сущность в вашу модель EF.

Чтобы вставить, обновить или удалить операции, используйте хранимые процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...