2017-08-01 131 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