我正在为我们数据库中的敏感数据编写一个加密序列。
目前我正在使用基于 UserId 的 GUID,并将其放入哈希中。然后,我通过 Rfc2898DeriveBytes 运行哈希以获取用于使用 Rijndael 函数加密数据的密钥和 IV。
我的代码如下所示:
var salt = new byte[] { 1, 2, 23, 234, 37, 48, 134, 63, 248, 4 };
const int iterations = 1000;
using (var rfc2898DeriveBytes = new Rfc2898DeriveBytes(GenerateHash("2525"), salt, iterations)) {
_key = rfc2898DeriveBytes.GetBytes(32);
_iv = rfc2898DeriveBytes.GetBytes(16);
}
然后我传递 _key 和 _iv 来解密或加密数据。我的目标是让每个用户在每个会话中始终可以访问他们的唯一密钥。话虽如此,什么可以随机化并且仍然保持这个功能?我是否总是必须使用相同的盐和相同的 IV 来获取我想要的数据?