.net MVC中的密钥和IV存储位置在哪里?
问题描述:
我有asp.net MVC 5项目和加密用户敏感信息并存储在数据库中,当我显示数据时,用户从数据库中获取信息并进行解密(在mvc项目中加密/解密并存储数据库中加密的数据)。我使用AesCryptography
加密/解密数据。我有Key和IV,关键和IV存储位置在哪里?.net MVC中的密钥和IV存储位置在哪里?
必须保存在webconfig中或使用Key和Iv列在数据库中创建单独的表或向用户表添加Key/IV列。
是一个好主意,为每行数据创建一个键和Iv?
答
你应该在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或其他工具生成密钥。
选项1:环境变量。选项2:Machine.config。选项3:数据库。 :) –