This Answer from GregSのコメントによると、IV は AES 暗号化データの先頭に追加する必要があります (正しく読んでいると仮定します)。
暗号の前に置きます。そうすれば、ストリーミングモードで復号化できます。
GregS は、暗号化に使用される IV を自動的に付加/解析するストリーミング モードがあることを示唆しているように思えます。
これは本当ですか?
私は現在、IV を暗号化されたデータに手動で追加し、暗号を IV とデータに手動で分割してから復号化しています。これを自動的に行う方法はありますか?
参考のため:
これが私が今していることです:
Encrypt
メソッド:
public byte[] Encrypt(byte[] data)
{
// Generate IV
var iv = new byte[BlockSize/8];
new Random().NextBytes(iv);
byte[] cipher = // encryption happens here
// Prepend IV to Cipher
var saltedCipher = new byte[iv.Length + cipher.Length];
Buffer.BlockCopy(iv, 0, saltedCipher, 0, iv.Length);
Buffer.BlockCopy(cipher, 0, saltedCipher, iv.Length, cipher.Length);
return saltedCipher;
}
Decrypt
メソッド:
public byte[] Decrypt(byte[] saltedCipher)
{
// Split saltedCipher into iv and cipher
var iv = new byte[BlockSize/8];
var cipher = new byte[saltedCipher.Length - iv.Length];
Buffer.BlockCopy(buffer, 0, iv, 0, iv.Length);
Buffer.BlockCopy(buffer, iv.Length, cipher, 0, cipher.Length);
byte[] data = // decryption happens here
return data;
}