私は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);
問題は、続けて「画像」を暗号化および復号化しようとすると、null値が返されることです。フルイメージ「pictureFull」でenc/decに進むと、null値も取得します。プログラムが通常「pictureFull」をenc/decするためには、FORを完全に削除する必要がありますが、そのFORはそれを変更しません。byte []配列を保存する他の方法はありますか、それとも何が問題になっていますか?