【发布时间】:2011-07-16 18:39:59
【问题描述】:
我正在寻找一种方法来混淆我存储在我的应用程序中的图像,目前正在考虑使用 Base46 编码。
我需要一些开销最小的东西,或者如果可能的话,可以提高文件系统上标准文件的性能。
有人可以评论base64编码图像(png)并随后在目标平台上使用(解码?)的可行性吗?
谢谢。
【问题讨论】:
我正在寻找一种方法来混淆我存储在我的应用程序中的图像,目前正在考虑使用 Base46 编码。
我需要一些开销最小的东西,或者如果可能的话,可以提高文件系统上标准文件的性能。
有人可以评论base64编码图像(png)并随后在目标平台上使用(解码?)的可行性吗?
谢谢。
【问题讨论】:
您要防范什么样的攻击? Base64 相当容易识别并且在空间方面具有潜在的显着影响(每张图像将占用额外 33% 的空间)。
仅从数据中很难发现某种移动 XOR,,但它不足以保护真正重要的资产。
【讨论】:
我相信您了解 Base64 不会欺骗任何真正想要获取您的位图的人。
Jon Skeet 是对的,Base64 可以很好地将二进制数据编码为可读格式,但在这里并不能真正帮助您。对您的密码进行 XOR 会更快,并且不会增加任何大小开销。
如果您真的想混淆您的位图,我建议您将它们存储在“raw”资源文件夹中。通过这样做,您将能够保留处理不同形式因素(ldpi、hdpi、...)的良好 Android 抽象。
扩展ImageView 类以直接使用R.raw.filename id 并在那里执行读取文件/解码流/创建位图。通过这样做,您将能够在需要时轻松回滚到标准的做事方式。
【讨论】:
请注意,在 Android 的应用程序内存中存储多个位图时可能会遇到内存问题。在 android 中处理位图时,OutOfMemoryErrors 似乎是一个反复出现的问题。这是一个例子:outofmemoryerror-bitmap-size-exceeds-vm-budget-android
【讨论】: