使用 SQLCipher 加密后无法压缩 Android SQLite 数据库

Ale*_*erl 5 sqlite encryption android filesize sqlcipher-android

我随我的应用程序一起提供了一个只读数据库,将它包含在 Assets/Database 目录中。所有数据都是事先预填充的。

SQLCipher数据库集成并加密后,我注意到 APK 大小从25MB膨胀到 150MB。原因是SQLite db 文件不再被压缩。

Android Studio 通常会压缩资源,但在 DB 文件被加密后,压缩文件似乎没有效果。我尝试在外面用常规的 Zip 和 7Zip 测试它并没有什么区别,压缩文件的大小与原始文件相同。

未加密的数据库大约 130MB,压缩后仅占用 18MB,因为其中大部分是文本和字符串压缩得很好。压缩加密的 db 文件在大小上没有区别。

通过服务器填充不是一个可行的选择,因为由于记录的数量,它需要永远。从服务器下载完整加密的 DB 文件是下一个选项,但对于 140MB 的文件,它仍然会太慢。

需要找到一种方法来随应用程序一起发送加密数据库,同时仍将应用程序大小保持在合理的20-30MB

有任何想法吗?

谢谢。

CL.*_*CL. 6

压缩需要在数据中找到模式。加密会删除所有此类模式。

您需要在加密之前进行压缩。这对于 SQLCipher 是不可能的;您必须发送压缩和加密的 .sql 文件,然后在新的加密数据库上执行它。