2017-03-01 34 views
-2

我有一個3層軟件:數據庫(MSSQL),框架(.NET)和一些客戶端。加密和解密數據庫級別的數據庫中的列而不更改框架

在數據庫中我有一個表格:People裏面的表格有一列secret這是字符串,不幸的是這個secret保存爲純字符串。這個想法是加密這個祕密(不是哈希),但是我不能也不想在框架中由於嚴重的原因去做,但是我必須在數據庫級別上做。

所以這個想法是,而不是存儲:I really like pink我可以存儲例如:TnfA608JRlWikdLeYkeOXADQi4a3bZZe7Ljchxk1ksU=和框架查詢數據庫時它已經解密文本I really like pink

我已經閱讀了數據庫中的主密鑰和使用3DES加密列的可能性,但信息非常模糊。

問:是否有可能與少數沒有在框架迫使數據庫寫它時,加密列和解密閱讀改變?

+1

退房SQL Server的[始終加密(https://msdn.microsoft.com/en-us/library/mt163865.aspx),它可從2016年版開始,您可以指定加密到列級並查詢表,就好像它沒有加密一樣(*假設連接提供了正確的加密密鑰*),並且您仍然可以使用適當的數據索引。 – Igor

+0

@Igor不,我沒有,它看起來很有希望,但是我們可能(90%肯定)使用舊版本,我對此無能爲力。我明天再查。 – Yoda

+0

如果他們使用的是舊版本,請檢查其升級策略是什麼。有時候公司會很好,並且會盡量保持服務器版本的最新性能,如果3個月後已經有升級計劃的話,沒有任何意義。無論哪種方式,祝你好運! – Igor

回答

0

你的問題不是很清楚,但你看過Crypteron's CipherDB Entity Framework的加密插件嗎?它不僅負責加密,還增加了防篡改保護,密鑰管理,分配,滾動和SQL,NoSQL,流,文件,對象等工作。

編輯:如果您不使用EntityFramework,請檢查Crypteron CipherObject NuGet包。您可以加密對象並使用加密的屬性。如果您在數據庫訪問層執行此操作,則其餘邏輯保持不變。這可能適用於您的用例。

聲明:我在那裏工作,但我們確實有一個免費社區版本,如果適合您的法案。

+0

我沒有使用EntityFramework。 – Yoda