我对 C# 还很陌生,并且收到了这个关于图像的 AES 加密项目。我可能在这里遗漏了一件非常简单的事情。我正在尝试从 bmp 中删除标头并加密其余部分,然后重新添加标头。如果我不删除标题,程序运行良好。要删除,我试过这个(bmp 标头是 54 字节):
MyImage = new Bitmap("path");
MemoryStream ms = new MemoryStream();
MyImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] Header=null, picture=null, pictureFull = ms.ToArray();
for (int i = 0; i < pictureFull.Length; i++)
{
if (i < 54)
{ Header[i] = pictureFull[i]; }
else
{ picture[i - 54] = pictureFull[i]; }
}
byte[] demoKeyBytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
PaddingMode padding = PaddingMode.ISO10126;
EncryptedImg = EncryptCall(demoKeyBytes, padding, picture);
问题是,如果我尝试继续加密和解密“图片”,我会得到一个空值。如果我继续使用完整图像“pictureFull”进行编码/解码,我也会得到一个空值。我需要完全删除 FOR 以便程序能够正常地编码/解码“pictureFull”,尽管 FOR 甚至没有修改它。是否有其他方法可以保存 byte[] 数组或有什么问题?