C# · 1月 28, 2022

c# – 带有Sql Server列级加密的实体框架

我需要加密许多数据库列(在sql Server 2012中).已经决定我们应该使用列级加密(在sql server中实现).在应用程序方面,我将在一些复杂的域模型之上构建一个web api.我真的想利用Entity Framework的代码第一种方法来维护一个干净的域模型.有没有人在这里有一个可行的解决方案,不涉及诉诸存储过程?理想情况下,我想以某种方式操纵实体框架生成的sql来包装某些字段来执行sql加密/解密功能.

理想情况下,例如:

modelBuilder.Entity<MyTable>().ToTable(“Table1”).Property(p => p.SensativeData).encrypt(“keyName”,authenticatorFunc);解决方法 在sql Server 2012中,列级加密主要可以通过两种方式完成,即:

>在Entity框架中定义自定义加密功能.
this blog
>使用this blog在dbcontext类(在此执行开放对称密钥代码)的实体框架中完成的sql单元级加密实现,并使用存储过程(包含表中指定字段的解密代码)检索结果集.

在sql Server 2016中有一个新功能,即始终加密,并在实体框架here中实现.