AES暗号化を使用しています。ファイル全体を暗号化してから復号化しても問題ありません。暗号化された 1 つのファイルに複数のファイルを追加したい。そこが問題です。暗号化は問題ありませんが、復号化により CryptographicException - 不正なデータ長が発生します。ファイルの一部を解読することさえ可能ですか、それとも全体が暗号化されていますか? 1 つのクリプトストリームを使用し、暗号化したいすべてのファイルを 1 つのファイルに渡しました。私は反対のことをしようとしています:
AesManaged aes = AES.InitAes(key, salt);
ICryptoTransform transform = aes.CreateDecryptor(aes.Key, aes.IV);
int defChunkSize = 1024 * 1024 * 50;
using (FileStream source = new FileStream(header.data.filename, FileMode.Open))
{
foreach (CryptHeader.fileStruct file in header.data.files)
{
preparePath(file.filename);
using (FileStream target = new FileStream(file.filename, FileMode.Create))
{
using (CryptoStream cryptoStream = new CryptoStream(target, transform, CryptoStreamMode.Write))
{
long padding = source.Length - header.data.files.Sum(x => x.length);//Just test
int chunkSize = (defChunkSize > (int)file.length) ? (int)file.length : defChunkSize;
byte[] chunkData = new byte[chunkSize];
int bytesRead = 0;
int totalRead = 0;
while (totalRead < file.length)
{
bytesRead = source.Read(chunkData, 0, chunkSize);
if (bytesRead <= 0) break;
totalRead += bytesRead;
cryptoStream.Write(chunkData, 0, bytesRead);
}
chunkData = null;
}
}
}
}