您好我正在做一个加密算法,它从文件(任何类型)中读取字节并将它们输出到文件中。问题是我的加密程序只需要 16 个字节的块,所以如果文件更大,它必须分成 16 个块,或者如果有办法每次从文件中读取 16 个字节就可以了。
该算法适用于 16 字节的硬编码输入。加密结果必须保存在列表或数组中,因为以后必须以相同的方式对其进行解密。我无法发布我的所有程序,但这是我到目前为止在 main 中所做的并且无法获得结果
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 方法无关紧要,它只是将元素打印为字节。