Шифрование значения поля в сущности Linq-to-Sql - PullRequest
3 голосов
/ 24 февраля 2011

Мне нужно зашифровать некоторые поля в моей сущности Linq2Sql. Я также хотел бы, чтобы процесс шифрования и дешифрования был прозрачным для потребителя объекта, то есть, когда объект загружен в память, поле представляется как обычная строка значений (дешифруется), но те же поля шифруются при сохранении в база данных.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Есть еще один вариант: вы можете «спрятать» фактическое свойство, например, с помощью protected модификатор доступа и добавление свойства "fake" public к частичному классу сущности, которое будет шифровать / расшифровывать это internal в получателе / ​​установщике, поэтому оно будет прозрачным для потребителя:

.dbml файл:

<Column Name="Password" 
    Member="PasswordInternal" 
    AccessModifier="Protected" 
    Type="System.String" 
    DbType="Varchar(64) NOT NULL" 
    CanBeNull="false" />

и затем в частичном классе:

public partial class YourEntity
{
   public string Password
   {
        get
        {
            return Crypter.Decrypt(this.PasswordInternal)
        }
        set
        {
            this.PasswordInternal = Crypter.Encrypt(value)
        }
   }
}
2 голосов
/ 24 февраля 2011

Ну, SQL 2008 может зашифровать столбец таблицы, и приложение не должно это обрабатывать.Вот ссылка .Имейте в виду, что это цена производительности процессора ЦП сервера sql.

...