【发布时间】:2016-03-22 22:18:47
【问题描述】:
我的要求是使用 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。
这是可能的还是有什么建议?
【问题讨论】:
-
您是否使用调试器检查了解密字节数组中的字节是否与原始字节匹配? (也许有一个单元测试?)
-
好吧,解密还没有完成。但即使它们不匹配,也应该将某些内容显示为图像。加密字节数组的长度在 5k 左右,但它不会生成任何图像。
-
为什么你会期望一个可能无效的字节数组总是生成图像?
-
我猜这就是一品脱。是否可以保证正确的加密始终会生成有效的字节数组?如何检查字节数组是否有效?
-
如果您加密一个字节数组,您将无法将其显示为图像。它不再是图像,而是一堆字节。
标签: c# encryption windows-phone-8.1 bitmapimage