C# 删除要加密的bmp标头

C# 删除要加密的bmp标头,c#,encryption,header,bmp,C#,Encryption,Header,Bmp,我是C#的新手,并且得到了这个AES图像加密项目。可能有一件很简单的事情我在这里遗漏了。我正在尝试从bmp中删除头并加密其余部分,然后将头添加回。如果我不删除标题,程序运行良好。要删除,我尝试了以下方法(bmp头是54字节): MyImage=新位图(“路径”); MemoryStream ms=新的MemoryStream(); 保存(ms,System.Drawing.Imaging.ImageFormat.Bmp); byte[]Header=null,picture=null,pictu

我是C#的新手,并且得到了这个AES图像加密项目。可能有一件很简单的事情我在这里遗漏了。我正在尝试从bmp中删除头并加密其余部分,然后将头添加回。如果我不删除标题,程序运行良好。要删除,我尝试了以下方法(bmp头是54字节):

MyImage=新位图(“路径”);
MemoryStream ms=新的MemoryStream();
保存(ms,System.Drawing.Imaging.ImageFormat.Bmp);
byte[]Header=null,picture=null,picturefulel=ms.ToArray();
for(int i=0;i

问题是,如果我试图继续加密和解密“图片”,我会得到一个空值。如果我继续使用完整的图像“pictureFull”访问enc/dec,我也会得到一个空值。我需要完全删除FOR,以便程序正常地enc/dec为“pictureFull”,尽管FOR甚至不会修改它。是否有其他方法保存byte[]数组或有什么问题?

请尝试此方法,而不是:

byte[] pictureFull = ms.ToArray();
byte[] Header = pictureFull.Take(54);
byte[] picture = pictureFull.Skip(54);
然后继续加密。
PS不要忘记添加系统。Linq名称空间是一个对象,因此您不希望将该类型的变量初始化为null。您可能希望像这样初始化
标题

byte[] Header = new byte[54];
byte[] picture = new byte[pictureFull.Length - 54];
picture
到长度至少等于实际图像数据长度的
新字节[]
,如下所示:

byte[] Header = new byte[54];
byte[] picture = new byte[pictureFull.Length - 54];
然后你可以复制东西给他们