幾年前,當第一次被引入到ASP.net和.NET Framework時,我構建了一個非常簡單的在線文件存儲系統。 該系統使用Rijndael加密來存儲服務器硬盤上加密的文件,並使用HttpHandler解密並將這些文件發送給客戶端。AES加密和密鑰存儲?
作爲我的第一個使用ASP.net和數據庫的項目之一,我並不十分了解整個系統是如何工作的(以及落入same trap described by Jeff Atwood on this subject),所以我決定將新生成的密鑰和IV與每個文件項在數據庫中。
爲了使事情更清楚一點,加密只是爲了防止文件直接訪問服務器,並且密鑰不是由用戶輸入的密碼生成的。
我的問題是,假設我不希望保留的所有文件的一個關鍵,如何應該我存儲加密密鑰爲安全起見?什麼被認爲是最佳實踐? (即:在不同的服務器上,在純文本文件上加密)。
此外,這種類型的加密算法中使用的初始化向量是什麼?它應該在系統中保持不變嗎?
次要觀察:「AES是一個分組密碼,它將數據分成塊並將最後一個塊加密的結果送入下一個塊。」您正在描述[CBC](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28CBC.29)* a *安全使用AES的方法。還有其他安全的解決方案 - 並不都需要一個初始化向量。 – KovBal 2014-10-14 16:55:39