SqlCipher 是一个对SqlLite数据库加密的组件。核心程序是C++编写的。加密后数据库文件的内容也是加密的,在读写时需要密码进行加解密。
一、组件特点:
1、SqlLite的官方版本也有加密功能,但加密功能不开源。并且官方加密功能与SqlCipher的加密不同。SqlCipher是在官方不带加密的开源代码库上扩展的加密功能,所以SqlCipher的版本与SqlLite的版本有对应关系。
2、SqlCipher的加密也是有多个版本的,各版本之间是不兼容的。所以使用时如果升级SqlCipher版本需要注意已生成的数据库文件版本要对应才能正常读写。
二、组件使用限制和依赖:
SqlCipher只是核心组件是开源的,但开源代码库不包含libcrypto.a。需要自行集成此组件。在代码库的readme有写集成方法,但需要用linux环境生成。
SqlCipher支持安卓,IOS这些是插件是在核心组件上扩展的项目,这些项目的开源规则并不相同。SqlCipher支持安卓的旧版本名称是android-database-sqlcipher,此组件官方已经不再支持。新项目名称是SqlCipher for Android,所以网上其它文章的代码示例有新有旧,大家要注意不能混用。
SqlCipher for android 是不开源的,但可以免费使用编译后的插件。对应需要android sdk 29及以上的版本,此版本兼容harmony os的2.0和3.0 版本(本人真机验证)。验证使用的版本依赖如下
implementation 'net.zetetic:sqlcipher-android:4.5.5@aar'
implementation 'androidx.sqlite:sqlite:2.2.0'