加密图像以形成另一个加密图像Windows Phone 8.1



我的要求是使用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文件格式以了解需要构造的标头的详细信息。

最新更新