【问题标题】:Displaying an encrypted byte array of an image in android在android中显示图像的加密字节数组
【发布时间】:2016-01-29 21:35:01
【问题描述】:

我有一张图片,我把它变成了一个字节数组。然后我用 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;
}

【问题讨论】:

  • 您显示的尝试似乎只使用 BMP,而不是 PNG,所以我删除了该标签。 (也请阅读PNG file format 以了解为什么您的代码可能 无法为这些工作!)请edit 您的问题并添加 what 到底没有工作。

标签: android image encryption bmp


【解决方案1】:

你的想法行不通。如果您只加密位图字节数组的大量字节,您将破坏其结构,之后您将不再有位图。所以你不能显示它。如果您希望能够显示“加密”图像,请按像素进行。看看 Bitmap.getPixel()/setPixel() 或 Bitmap.getPixels()/setPixels()。

【讨论】:

  • 感谢您的回复。我已将我的问题缩小到更具体的问题。有关详细信息,请参阅此问题 - 如果您能以任何方式提供帮助,我将不胜感激
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
相关资源
最近更新 更多