2017-08-01 127 views
2

我有asp.net MVC 5項目和加密用戶敏感信息並存儲在數據庫中,當我顯示數據時,用戶從數據庫中獲取信息並進行解密(在mvc項目中加密/解密並存儲數據庫中加密的數據)。我使用AesCryptography加密/解密數據。我有Key和IV,關鍵和IV存儲位置在哪裏?.net MVC中的密鑰和IV存儲位置在哪裏?

必須保存在webconfig中或使用Key和Iv列在數據庫中創建單獨的表或向用戶表添加Key/IV列。

是一個好主意,爲每行數據創建一個鍵和Iv?

+0

選項1:環境變量。選項2:Machine.config。選項3:數據庫。 :) –

回答

2

你應該在web.config中存儲Key。使用appSettings作爲最簡單的方法,它是完全正確的。

<appSettings> 
     <add key="DataEnryptionKey" value="allyourbase"/> 
    </appSettings> 

WIKI:

初始化向量具有比 鍵不同的安全要求,所以IV通常並不需要是祕密。但是,在大多數情況下,重要的是初始化向量永遠不會在同一個密鑰下重複使用 。

對於每個加密操作,IV的全部要點不同。所以當你兩次加密「123」時,你不會得到相同的加密輸出。查看wiki。

所以在web.config中存儲IV是不好的。通用方法 - 將IV存儲爲第一個密碼塊。

簡單的方式

使用MachineKey.Protect/MachineKey.Unprotect方法 他們已經做的東西在一個安全的方式。

您只需使用IIS或其他工具生成密鑰。


enter image description here


enter image description here