【发布时间】: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