android sqlite加密数据库,Android Sqlite数据库加密

android sqlite加密数据库,Android Sqlite数据库加密Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个:1.对几个关键的字段使用加密算法,再存入数据库2.对整个数据库进行加密SQLite数据库加密工具:收费工具:免费工具:SQLCipher使用:SQLCipher是完全开源的软件,提供256-bitAES加密源码编译:1.OpenSSL编译SQLCipher源码编译需要依赖OpenSSL提供的libcry…

大家好,又见面了,我是你们的朋友全栈君。

Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个:

1. 对几个关键的字段使用加密算法,再存入数据库

2. 对整个数据库进行加密

SQLite数据库加密工具:

收费工具:

免费工具:

SQLCipher使用:

SQLCipher是完全开源的软件,提供256-bit AES加密

源码编译:

1. OpenSSL编译

SQLCipher源码编译需要依赖OpenSSL提供的libcrypto

下载OpenSSL源码,这里选择稳定版本1.0.1h

1 openssl-1.0.1h Admin$ ./config –prefix=/usr/local –openssldir=/usr/local/openssl2 openssl-1.0.1h Admin$ make

3 openssl-1.0.1h Admin$ maketest4 openssl-1.0.1h Admin$ make install

2. SQLCipher源码编译

1 sqlcipher Admin$ ./configure –enable-tempstore=yes CFLAGS=”-DSQLITE_HAS_CODEC” LDFLAGS=”/usr/local/lib/libcrypto.a”

2 sqlcipher Admin$ make

命令行使用:

1. 创建加密数据库

1 $ sqlcipher encrypted.db2 SQLCipher version 3.8.4.3 2014-04-03 16:53:12

3 Enter “.help” forinstructions4 Enter SQL statements terminated with a “;”

5 sqlite> PRAGMA key = ‘thisiskey‘;6 sqlite> create table encrypted (idinteger, name text);7 sqlite>.schema8 CREATE TABLE encrypted (idinteger, name text);9 sqlite> .q

2. 打开加密数据库

1 $ sqlcipher encrypted.db2 SQLCipher version 3.8.4.3 2014-04-03 16:53:12

3 Enter “.help” forinstructions4 Enter SQL statements terminated with a “;”

5 sqlite> PRAGMA key = ‘thisiskey‘;6 sqlite>.schema7 CREATE TABLE encrypted (id integer, name text);

3. 修改数据库密码

1 sqlite> PRAGMA rekey = ‘newkey‘;

4. 加密已有的数据库

1 $ sqlcipher banklist.sqlite32 SQLCipher version 3.8.4.3 2014-04-03 16:53:12

3 Enter “.help” forinstructions4 Enter SQL statements terminated with a “;”

5 sqlite> ATTACH DATABASE ‘encrypted.db‘ AS encrypted KEY ‘thisiskey‘;6 sqlite> SELECT sqlcipher_export(‘encrypted‘);7 sqlite> DETACH DATABASE encrypted;

5. 解密数据库

1 $ sqlcipher encrypted.db2 SQLCipher version 3.8.4.3 2014-04-03 16:53:12

3 Enter “.help” forinstructions4 Enter SQL statements terminated with a “;”

5 sqlite> PRAGMA key = ‘thisiskey‘;6 sqlite> ATTACH DATABASE ‘plaintext.db‘ AS plaintext KEY ‘‘;7 sqlite> SELECT sqlcipher_export(‘plaintext‘);8 sqlite> DETACH DATABASE plaintext;

Android版本SQLCipher使用

android版本源码,编译需要依赖的东西很多,懒得去试了,可以直接下载已经编译好的binary,官网下载,或者这里为3.1.0版本

注:github上的binary为2.1.1,实际测试在Android 4.4 kitkat上无法使用,请从官网下载最新的3.1.0版本

1. 将解压后的libs和asserts添加到工程:

20180920231000912214.png

2. 将工程中原有的android.database.sqlite.*全部替换为net.sqlcipher.database.*,原先的android.database.Cursor可以保留

20180920231001227624.png

3. 在activity或者其他调用数据库的地方,注意要在使用数据库之前加上:

1 SQLiteDatabase.loadLibs(this);

备注:使用SQLCipher命令行将原先的数据库加密之后,新数据库的version有可能为0,导致在SQLiteOpenHelper中会进入到onCreate()中,重建数据库。

解决方法,将数据库版本改回原先的版本:

1 sqlite> PRAGMA user_version = 12;

原文:http://www.cnblogs.com/treecat-roboto/p/3873707.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145816.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 谷歌浏览器安装postman插件_nik插件安装方法

    谷歌浏览器安装postman插件_nik插件安装方法最近使用了一个向后台发送请求的插件,简单方便,功能强大,推荐给大家使用!Chrome版本68.0.3440.75(正式版本)(64位)Postman版本4.1.31、安装POSTMAN插件Chrome浏览器——>更多工具——>扩展程序选择加载已解压的扩展程序选择POSTMAN文件夹完成样例2、加载模板打开POSTMAN客…

    2022年9月16日
    3
  • 超详细Linux配置DHCP服务器

    超详细Linux配置DHCP服务器概述DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。工作原理1、客户端开机没有IP,局域网内需要发送一个广播形式的DISCOVER(局域网内不知道谁是DHCP服务器),只要能收…

    2022年5月29日
    40
  • 编程语言与Python介绍

    编程语言与Python介绍一、编程语言的分类1.机器语言:计算机能直接理解的二进制指令(10101010101)优点:执行速度快缺点:开发效率非常低2.汇编语言:通过英文字符组成代表一组二进制指令优点:开发效率相较

    2022年7月6日
    20
  • matlab绘制三维图形的步骤_matlab绘制三维图形的步骤

    matlab绘制三维图形的步骤_matlab绘制三维图形的步骤基于Matlab的六个用于绘制三维图像的函数……

    2022年10月11日
    2
  • 如何设置python的环境变量_anaconda环境变量手动设置

    如何设置python的环境变量_anaconda环境变量手动设置在python项目实践中,不知道为什么我的os.getenv一直拿不到环境变量,于是我就试了三种设置环境变量的方法,中解决了问题。一.系统变量设置python环境变量的配置方法:1、第一步在我们的电脑上鼠标右键此电脑,选择属性,进去之后,点击高级系统设置,如下图所示2、第二步进去之后,点击环境变量,如下图所示:3、第三步进去环境变量界面之后,点击path,进行编辑,如下图所示:二.pycharm用户环境变量设置:1.打开文件—设置2.打开构建,执行,部署–python控制台–环境变量

    2022年8月25日
    7
  • latex输入希腊字母_LaTeX绝对值

    latex输入希腊字母_LaTeX绝对值

    2022年8月31日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号