2013-04-05 91 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