2011-09-27 143 views
0

我需要在C#中創建一個對稱密鑰,並使用它來加密一個字符串,我最終將該字符串存儲在數據庫中。我會使用.Net中的AES機制來實現這一點。我將使用相同的密鑰來解密加密的數據。如何更改加密密鑰並仍能解密舊數據?

現在我的要求是,如果我有一個機制來改變密鑰。如何確保我可以使用新創建的密鑰來解密使用舊密鑰或過期密鑰加密的字符串?

+0

我相信你應該在刪除舊密鑰之前使用新密鑰對數據進行重新加密 – sll

+0

如果我有一種定期更新密鑰的機制(比如一年),該怎麼辦?我是否需要添加代碼來重新加密可能是大量數據的數據)? – user967338

+0

正如@sll所說 - 在您更改密鑰之前,您需要使用舊密鑰解密所有數據,使用新密鑰對其重新加密,然後替換數據庫中的數據。 – Smudge202

回答

1

數據庫中的所有內容都必須解密,然後每當密鑰更改時使用新密鑰重新加密。

EDIT--

根據您的評論,什麼Key_Source和Identity_Value正在做的是創建一個從來沒有改變,然後加密該密鑰並定期改變這種外層的關鍵。我不會推薦自己實現這一點,因爲要正確保護主密鑰非常困難,並且只要使用內置於MS SQL的密鑰系統(如果那是您正在使用的數據庫)即可。