在android中显示图像的加密字节数组

时间:2016-01-29 09:15:59

标签: android image encryption bmp

我有一个图像,我把它变成一个字节数组。然后我用AES加密这个字节数组,我希望显示一个代表这种加密的可视结果。

问题是所有的头文件和元信息都是加密的,因此这个传递给byteToImage()的加密字节数组不会被识别为图像的有效表示,即decodeByteArray()返回null。

我已经尝试切断原始图像的前512个字节并将其重新附加到加密字节数组的开头,希望这将恢复标头信息 - 但它没有工作。我有.png和.bmp图像。理想情况下我想要的是一种在android中表示RAW图像并将这个信息字节加密为字节的方法 - 不需要摆弄标题等。

我真的很感激任何帮助。

private static byte[] imageToBytes(ImageView iv){

byte[] imageInByte = null;
Bitmap originalImage;
ByteArrayOutputStream baos = new ByteArrayOutputStream();

BitmapDrawable drawable = (BitmapDrawable) iv.getDrawable();

originalImage = drawable.getBitmap();

originalImage.compress(Bitmap.CompressFormat.PNG, 0, baos); // was 70
imageInByte = baos.toByteArray();

return imageInByte;

}

private static Bitmap bytesToImage(byte data[]) {


    // byte[] x = Base64.decode(data, Base64.DEFAULT); using x in place of data also fails
    Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);

    return bmp;
}

1 个答案:

答案 0 :(得分:0)

你的想法不会奏效。如果只加密位图字节数组的大量字节,则会拆除其结构,之后就不再有位图了。所以你无法显示它。如果您希望能够显示加密的'然后以像素方式执行。看看Bitmap.getPixel()/ setPixel()或Bitmap.getPixels()/ setPixels()。