如何更改加密密钥并仍然能够解密旧数据?

时间:2011-09-27 15:09:08

标签: c# aes rijndaelmanaged

我需要在C#中创建一个对称密钥并用它来加密一个字符串,我最终会将其存储在一个数据库中。我会在.Net中使用AES机制来实现这一目标。我会使用相同的密钥来解密加密数据。

现在我的要求是,如果我有一个机制来改变密钥。如何确保我可以使用新创建的密钥来解密使用旧密钥或过期密钥加密的字符串?

1 个答案:

答案 0 :(得分:1)

每次密钥更改时,必须解密数据库中的所有内容,然后使用新密钥重新加密。

编辑 -

根据您的评论,Key_Source和Identity_Value正在做的是创建一个永不改变的密钥,然后加密该密钥并定期更改该外层。我不建议您自己实现,因为很难正确保护主密钥,只需使用MS SQL内置的密钥系统(如果您正在使用的数据库)。