2011-02-24 83 views
3

我需要加密我的Linq2Sql實體上的一些字段。我還希望加密和解密過程對實體的消費者是透明的,這意味着一旦實體加載到內存中,該字段就會呈現爲常規值字符串(解密),但是相同的字段在被持久保存數據庫。在Linq-to-Sql實體中加密字段的值

回答

2

還有另一種選擇:你可以用例如「隱藏」實際屬性。 protected訪問修飾符和「假」 public屬性添加到實體部分的類將加密/ decript這internal中的getter/setter,所以這將是透明的消費:

.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

好吧,SQL 2008可以加密一個表的列,並且應用程序不必處理它。 繼承人link。請注意,這在sql server的CPU上具有性能價格。

+0

我在2005年:(,卻發現可以截獲做數據加密裝載的()和OnValidat(ChangeAction動作)的方法。 – dexter 2011-02-24 15:04:24