`
emowuyi
  • 浏览: 1540619 次
文章分类
社区版块
存档分类
最新评论

SQLCipher加密SQLite数据库

 
阅读更多

Android本身自带有不加密的数据库SQLite,如果要保存密码之类的敏感数据在本地的话方法一是使用字段加密解密算法,方法二是整个数据库都加密掉。如果只是加密解密某个字段(如数据库)就推荐使用第一种方法,轻便易用;如果想要整个数据库都加密的话,就推荐方法二了,使用其他的数据库SQLite,如SQLCipher,其是实现加密了的SQLite数据库,使用方法与Android自带的大部分一样,就需要注意以下步骤,否则加密不成功。

这里讲的是SQLCipher for Android v2.2.2版本,使用的是AES加密,本人通过自己的探索和文章参考总结出来一下步骤和注意事项。

    1. 官方下载最新版本:http://sqlcipher.net/,本文所讲版本实现加密功能后增大了6MB,最新版本比较大,但是能保证对Android版本的兼容性。
      源文件(可自由编译):
      git clone https://github.com/sqlcipher/android-database-sqlcipher.git

      二进制文件:SQLCipher For Android

    2. 下载好二进制文件解压后,将里面对应的.zip、.so、.jar文件复制到对应的工程文件夹,如assets文件夹里的icudt46l.zip复制到工程的assets文件夹,完成,应该是与喜爱的样子:
    3. 接下来,针对libs文件夹里面加入的三个jar包(commons-codec.jar, guava-r09.jar 和 sqlcipher.jar)来Build path,如图:
    4. 接下来如果你已经使用了Android自带的SQLite数据库,那么这部就是替换工作,否者就是包引用工作,即将android.database.sqlite.SQLiteDatabase的import替换为net.sqlcipher.database.SQLiteDatabase,如果实现了SQLiteOpenHelper也要修改为import net.sqlcipher.database.SQLiteOpenHelper,反正就是import中包含android.database.sqlite.*都替换成info.guardianproject.database.sqlite.*。import android.database.Cursor则不需要替换。
    5. 接下来的关键一步是添加加密密匙,添加方法是实现getWritableDatabase("thisismyencryptstringkey"),参数是字符串类型,如果为""的话表示不加密,这里要注意的是不能包含逗号否者也是实现不了加密的。
    6. 接下来在使用数据库的Activity,至少需要加入引入一下import(假设有DBManger或者DBHelper之类的封装工具,其要多加入import net.sqlcipher.database.SQLiteOpenHelper,来通过SQLiteOpenHelper声明、创建数据库):
      import net.sqlcipher.database.SQLiteDatabase;

    7. 接下来还是关键一步,还是在Activity,里面的onCreate方法加入,而且应该是最先加入的(要早于实例化数据库,这个是为了引入包里面的so文件以进行引用,否者会出现各种implementation、dbopen、UnsatisfiedLinkError的问题):
      SQLiteDatabase.loadLibs(this);//涉及到数据库必须使用而且需要先声明才能执行以下实例化的数据库

    8. 完成,测试吧,骚年!

关于SQLCipher的编译,可参考:

1、为跨平台数据库引擎 SQLite 实现加密扩展https://sites.google.com/site/notegainexp/sqlite/weikuapingtaishujukuyinqingsqliteshixianjiamikuozhan

2、SQLite加密--SQLCipherhttp://stormzhang.github.io/blog/2013/06/16/sqlite-encrypt/

分享到:
评论

相关推荐

    sqlcipher加密sqlite数据库练习

    在“sqlcipher加密sqlite数据库练习”中,你可以学习如何将SQLite数据库与SQLCipher集成,实现对数据库的加密操作。这通常包括以下步骤: 1. 安装SQLCipher:首先,你需要获取SQLCipher库,并根据你的操作系统...

    使用Sqlcipher对sqlite数据库进行加解密

    Sqlcipher是一款开源的加密库,专门用于为SQLite数据库提供加密功能。在Android开发中,由于sqlite是默认的数据存储方式,但原始的sqlite数据库并不具备安全的加密机制,因此Sqlcipher的引入可以有效保护用户数据的...

    SQLCipher为sqlite数据库设置密码

    SQLCipher是一款开源的数据库加密工具,它为SQLite数据库提供透明的数据加密功能,确保在存储和检索数据时的数据安全。SQLite是广泛应用于移动设备和嵌入式系统的轻量级数据库,而SQLCipher则增强了其安全性,使得...

    Ormlite框架整合sqlcipher加密sqlite数据库

    请参考:http://www.apkbus.com/forum.php?mod=viewthread&tid=165106 修改了 ormlite 源码整合了sqlcipher 可对数据库进行加密。 DBHelper 类中设置密匙.

    CppSQLite + sqlcipher + sqlite_3.33.0实现数据库加密

    开发者可以通过这些例子学习如何在自己的项目中引入数据库加密,以提高数据安全性,并且理解如何在不同编程环境中与SQLite数据库进行交互。同时,`CppSQLite`的使用也能简化C++开发者的代码,使他们能更快地实现...

    sqlite数据库加密解密sqlcipher3.0.1.zip

    在"sqlite数据库加密解密sqlcipher3.0.1.zip"这个压缩包中,"txt.txt"文件可能是关于如何使用SQLCipher的指南或使用示例,它可能会涵盖以下内容: 1. **安装与集成**:指导如何将SQLCipher库集成到你的项目中,可能...

    @journeyapps/sqlcipher sqlite3加密

    SQLCipher是一款开源的、基于SQLite3的数据库加密解决方案,它为SQLite数据库提供了透明的数据加密功能,确保在存储和处理敏感信息时提供安全保护。 首先,我们需要了解SQLite3。SQLite3是一个轻量级的、自包含的、...

    sqlcipher4 可设置sqlite数据库密码

    SQLCipher4是一款强大的开源库,用于为SQLite数据库提供透明的加密功能。在标题和描述中提到,它允许用户为SQLite数据库设置密码,确保数据的安全性。SQLCipher4是SQLCipher系列的最新版本,相较于之前的SQLCipher3...

    Android studio+SQLCipher加密SQLite数据库的几个坑-附件资源

    Android studio+SQLCipher加密SQLite数据库的几个坑-附件资源

    SQLite数据库 加密解密工具

    在处理敏感数据时,为了保护信息安全,对SQLite数据库进行加密是必要的步骤。本文将详细介绍如何使用.NET环境下的SQLite加密解密工具来确保数据库的安全。 首先,SQLite数据库的加密通常涉及到两方面的技术:透明...

    SQLite数据库加密/解密工具

    SQLite数据库加密/解密工具是一款专门用于SQLite数据库的安全软件插件。它提供了在C#环境下对SQLite数据库进行加密和解密的全套解决方案,让数据库管理员和开发者能够对敏感数据进行安全保护。软件的核心功能是通过...

    SqlCipher.exe Sqlite加密查看工具

    SqlCipher.exe是一款针对Sqlite数据库的加密查看工具,专为Windows操作系统设计。Sqlite是一款轻量级、自包含的数据库引擎,广泛应用于各种桌面和移动应用程序。然而,数据安全是任何应用的重要考量,SqlCipher正是...

    Sqlcipher 加密sqlite androidstudio as

    Sqlcipher是一种开源的数据库加密解决方案,它为SQLite数据库提供了强大的加密功能,确保在Android Studio (AS) 开发环境中存储的数据安全。在Android应用开发中,SQLite通常被用来管理应用程序的本地数据,但如果不...

    SQLcipher2.1,SQLite数据库管理工具

    当数据库被SQLcipher加密后,只有拥有正确密钥的用户才能访问数据,这极大地增强了数据的保密性。SQLcipher2.1版本可能包括了性能优化和一些安全增强特性,以提供更好的加密服务。 在使用SQLcipher时,你需要知道...

    android 的sqlite数据库加密实现

    "NativeDemo"可能是一个示例项目,展示了如何在Android原生环境中实现SQLCipher加密。这个项目可能包含了集成SQLCipher的步骤,以及如何在实际应用中使用加密数据库的示例代码。 通过以上介绍,我们了解了在Android...

    sqlcipher.exe用于打开加密的SQLite数据库

    编译后的sqlcipher.exe文件,自己搭建环境编译比较麻烦,特此奉上方便大家使用

    sqlcipher加密数据库查看器

    "sqlcipher 加密数据库查看器"是一个专门针对加密后的 SQLite 数据库的查看工具,它允许开发者在不暴露加密密钥的情况下查看和分析数据库内容。这个工具通常具有以下功能: - 导入加密的数据库文件(.db) - 输入...

    QT sqlite加密数据库引擎

    QT自带的Sqlite引擎是不支持加密的,所以自己实现了能够加密的Sqlite引擎,继承QSqlDriver实现的,与其他数据库一样使用QSqlDatabase进行操作,与QT自带数据库操作保持一致。文件包含项目源码及测试代码。

    sqlite3嵌入式数据库加密

    总的来说,"sqlite3嵌入式数据库加密"涉及了SQLite3数据库与Qt的集成,使用SQLCipher库来实现数据加密,以及如何在Qt应用程序中创建、管理和测试加密的SQLite3数据库。这个主题对于那些需要在Qt应用中处理敏感数据的...

Global site tag (gtag.js) - Google Analytics