こんにちは私はファイル(任意のタイプ)からバイトを読み取り、それらをファイルに出力する暗号化アルゴリズムを実行しています。問題は、私の暗号化プログラムは16バイトのブロックしか使用しないため、ファイルが大きい場合は16のブロックに分割する必要があるか、問題が発生するたびにファイルから16バイトを読み取る方法がある場合です。
アルゴリズムは、16バイトのハードコードされた入力で正常に機能しています。暗号化された結果は、後で同じ方法で解読する必要があるため、リストまたは配列に保存する必要があります。すべてのプログラムを投稿することはできませんが、これまでのところメインで行っていることで、結果を得ることができません。
static void Main(String[] args)
{
byte[] bytes = File.ReadAllBytes("path to file");
var stream = new StreamReader(new MemoryStream(bytes));
byte[] cipherText = new byte[16];
byte[] decipheredText = new byte[16];
Console.WriteLine("\nThe message is: ");
Console.WriteLine(stream.ReadToEnd());
AES a = new AES(keyInput);
var list1 = new List<byte[]>();
for (int i = 0; i < bytes.Length; i+=16)
{
a.Cipher(bytes, cipherText);
list1.Add(cipherText);
}
Console.WriteLine("\nThe resulting ciphertext is: ");
foreach (byte[] b in list1)
{
ToBytes(b);
}
}
私のループは常にバイト配列の最初の16バイトを追加することを知っていますが、私は多くの方法を試しましたが、何も機能しませんでした。バイト配列にインデックスを付けたり、アイテムをのような一時変数にコピーしたりすることはできませんtemp = bytes[i]
。ToBytesメソッドは関係ありません。要素をバイトとして出力するだけです。