2011-02-24 75 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