【发布时间】:2011-09-27 15:09:08
【问题描述】:
我需要在 C# 中创建一个对称密钥并使用它来加密一个字符串,我最终会将其存储在数据库中。我会使用 .Net 中的 AES 机制来实现这一点。我会使用相同的密钥来解密加密的数据。
现在我的要求是,如果我有更改密钥的机制。如何确保我可以使用新创建的密钥来解密使用旧密钥或过期密钥加密的字符串?
【问题讨论】:
-
我认为您应该在删除旧密钥之前使用新密钥重新加密数据
-
如果我有一种定期(比如一年)更新密钥的机制怎么办?我是否必须添加代码来重新加密可能是大量数据的数据)?
-
正如@sll 所说 - 在您更改密钥之前,您需要使用旧密钥解密所有数据,使用新密钥重新加密,然后替换数据库中的数据跨度>
-
:-( 我正在寻找类似于在 MS SQL 中使用 Key_Source 和 Identity_Value 的解决方案?
-
另一种方法是保留旧密钥,任何加密都需要引用它加密的密钥(例如作为外键或通过比较时间戳和到期日期)。这样,当密钥更改时,您只需添加新密钥并将其标记为活动,将旧密钥标记为过期。所有新数据都使用新密钥加密,您可以在需要解密旧数据时引用旧密钥
标签: c# aes rijndaelmanaged