加密图像以形成另一个加密图像Windows Phone 8.1
本文关键字:加密 图像 Phone Windows 另一个 | 更新日期: 2023-09-27 18:27:06
我的要求是使用AES加密图像。我的方法是将图像转换为字节数组并应用加密。加密后,将加密的字节数组转换回图像。
但在最后一部分中,没有从字节加密的数组中生成图像。
图像加载在的字节数组中
RandomAccessStreamReference rasr = RandomAccessStreamReference.CreateFromFile(storageFile);
var streamWithContent = await rasr.OpenReadAsync();
byte[] buffer = new byte[streamWithContent.Size];
await streamWithContent.ReadAsync(buffer.AsBuffer(), (uint)streamWithContent.Size, InputStreamOptions.None);
加密在以下代码中完成
IBuffer Buffer = CryptographicBuffer.CreateFromByteArray(buffer);
byte[] encrypted = null;
CryptographicBuffer.CopyToByteArray(CryptographicEngine.Encrypt(AES, Buffer, null),out encrypted);
return encrypted;
而字节数组被转换回图像作为
var pic = new BitmapImage();
var imageBytes = returned_value;
using (InMemoryRandomAccessStream ms = new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(ms.GetOutputStreamAt(0)))
{
writer.WriteBytes((byte[])imageBytes);
writer.StoreAsync().GetResults();
}
pic.SetSource(ms);
}
我试着用pic.PixelWidth
检查结果图像的尺寸,它只是0。
这可能吗?或者有什么建议吗?
位图文件在实际图像之前有一些特定的头信息。您需要正确地将该信息创建为加密字节的标头。自然地,加密图像本身将是彩色像素的混杂。
请参见BMP文件格式以了解需要构造的标头的详细信息。