我必须通过 AES 每种算法来加密和解密图像。 我有以下加密图像的代码:
public static byte[] MakeEncryption(Image image, CipherMode mode, byte[] key, byte[] iv)
{
using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider { Mode = mode })
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] imageBytes;
using (var mstream = new MemoryStream())
{
image.Save(mstream, image.RawFormat);
imageBytes = mstream.ToArray();
}
using (MemoryStream input = new MemoryStream(imageBytes))
using (MemoryStream encrypted = new MemoryStream())
using (CryptoStream cryptoStream = new CryptoStream(encrypted, encryptor, CryptoStreamMode.Write))
{
input.CopyTo(cryptoStream);
return encrypted.ToArray();
}
}
}
以下代码将字节数组转换为图像:
public static Image GetImage(byte[] bytes)
{
Image img;
using (var ms = new MemoryStream(bytes))
{
ms.Position = 0;
ms.Write(bytes, 0, bytes.Length);
img = Image.FromStream(ms); // this line cause to ArgumentException
}
return img;
}
每次运行代码时我都会遇到同样的问题: System.ArgumentException 与注释一致
知道出了什么问题吗?
我尝试了多种将图像加载到加密函数中的方法,多种使用不同类型 Stream 的方法,但没有任何帮助