gpt4 book ai didi

android - 通过位切换混淆 JPG - 在 Android 上读取性能

转载 作者:行者123 更新时间:2023-11-29 14:02:57 25 4
gpt4 key购买 nike

摘要:

  • 从文件中读取图片
  • 使用切换位使预览工具无法使用
  • 不能使用加密,需要很大的力量
  • 我可以优化下面的代码,还是有更好的方法

更长的描述:

我正在尝试改进我的代码,也许您对以下情况有一些想法或改进。请注意,我既不试图打败中央情报局,也不关心是否有人“破坏”了加密。

背景很简单:我的应用程序将服务器上的一堆图像加载到 SD 卡上的文件夹中。 我不希望图像是简单的 JPG 文件,因为在这种情况下,媒体索引器会将它们列在库中,用户只需将整个文件夹复制到他的硬盘即可。

显而易见的方法是加密。但是完全成熟的 AES 或其他加密没有意义,原因有两个:我必须将 key 存储在应用程序中,这样任何人都可以通过一些努力获得 key 。而且动态解密图片的价格太高了(我们说的是一个包含 30 张 200kB 图片的画廊)。

所以我决定切换图像中的一些位。这使得图像工具(或预览)无法读取格式,但在读取图像时很容易撤消。对于“加密”,我使用了一些 C# 工具,“解密”行如下:

public class CustomInputStream extends InputStream {
private String _fileName;
private BufferedInputStream _stream;


public CustomInputStream(String fileName) {
_fileName = fileName;
}

public void Open() throws IOException {
int len = (int) new File(_fileName).length();
_stream = new BufferedInputStream(new FileInputStream(_fileName), len);
}


@Override
public int read() throws IOException {
int value = _stream.read() ^ (1 << 7);
return value;
}


@Override
public void close() throws IOException {
_stream.close();

}

}

我也尝试覆盖其他方法(读取超过一个字节),但这会杀死 BitmapFactory - 不知道为什么,也许我做错了什么。下面是创建图像位图的代码:

Bitmap bitmap = null;
try {
InputStream i = CryptoProvider.GetInstance().GetDecoderStream(path);
bitmap = BitmapFactory.decodeStream(i);
i.close();
} catch (Exception e1) {
_logger.Error("Cant load image " + path + " ERROR " + e1);
}
if (bitmap == null) {
_logger.Error("Image is NULL for path " + path);
}
return bitmap;

您对所选方法有任何反馈吗?有什么方法可以优化它,还是针对 Android 设备采用完全不同的方法?

最佳答案

您可以尝试将字节流与快速 PRNG 的输出进行异或运算。只需为每个文件使用不同的种子即可。

注意:正如问题中已经指出的那样,这些方法很容易绕过。

关于android - 通过位切换混淆 JPG - 在 Android 上读取性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com