2013-04-05 95 views
0

在SQL服务器更新加密的数据我使用C#4.0,VS 2010 MVC 3和Entity Framework为Web应用程序和使用的数据存储SQL服务器2008R2。我需要对一个表中的三列进行加密 - 其中两个是文本列,另一个是日期列,用于更新它们并使用上述技术在这些列中搜索项目。搜索和使用实体框架

TDE不是一个选项。

这似乎执行但在SQL服务器上的所有加密功能的最佳做法,虽然有很多关于如何将列作为一次性的锻炼加密的例子,就没有什么更新或搜索这些字段加密一次。

我可以看到没有其他办法,而不是加密和解密移动到应用程序中。

所有指导,帮助,指针和提示都非常欢迎。

谢谢。

+0

如果加密由DB服务器进行的,未加密的值可能会出现在应用程序和DB服务器之间的数据流的TDS。您可能需要考虑实施SSL for SQL Server来防止信息泄漏,这取决于你的实现细节 - http://msdn.microsoft.com/en-us/library/ms189067%28v=sql.105%29。 aspx – 2013-04-05 10:16:55

+0

非常感谢,这是一个非常有用的想法 – 2013-04-05 10:25:11

回答

3

根据定义,您无法搜索加密数据。你可以搜索的是已知纯文本的散列并处理可能的冲突。为此,您需要添加更多列以保存被加密的纯文本的散列。有关更多详细信息和示例,请参阅Indexing encrypted data

至于更新,我真的没有看到问题是什么。与其他更新一样,您使用新的加密值更新加密值。

TDE在很大程度上是一个更好的选择。只是在说'。

+0

感谢Remus。我正在用一个简短的手来搜索:-)。更新的问题是,如果使用EF,除了通过触发器之外,我看不到在哪里进行加密。 – 2013-04-05 10:27:27

+0

您必须通过存储过程完成所有DML(插入,更新)交互。 EF对这种情况的支持很差,所以你必须决定你的优先级,即使它意味着放弃一个ORM或另一个。 – 2013-04-05 10:44:46

+0

感谢莱姆斯,不是我想要的答案,但我期待的答案。 – 2013-04-05 12:10:10