项目中要预先放置一部分food的sqlite数据在程序里,android项目资源文件的破译非常简单,出于安全考虑,要对sqlite文件进行加密处理,于是就用到了加密解密工具SQLCipher。

SQLCipher is an open source library that provides transparent, secure 256-bit AES encryption of SQLite database files.

虽然SQLCipher是开源的,但是仅仅是开源的而已——你要自己编译,不想自己编译就得付费购买已经编译好的二进制文件~~木有钱,只好自己编译了,这里来讲下编译过程。

1.下载源代码

官方源代码:https://github.com/sqlcipher/sqlcipher

2.编译

进入源代码目录:
./configure –enable-tempstore=yes CFLAGS=”-DSQLITE_HAS_CODEC” LDFLAGS=”-lcrypto”
make
注意:由于SQLCipher是SQLite的另外一个版本,所以为了不影响系统的SQLite,和其他SQLCipher版本间的兼容问题,所以不能将编译生成的直接install到系统,可以做符号链接等方式来管理二进制版本。我这里建立了一个软链接:

ln -s /Users/storm/sqlcipher/sqlite3 /usr/bin/sqlcipher

3.验证编译是否成功

创建一个加密的数据,密码是bbbbbb:

$ sqlcipher test.sqlite
SQLite version 3.7.14.1 2016-10-04 19:37:12
Enter “.help” for instructions
Enter SQL statements terminated with a “;”
sqlite> PRAGMA key = ‘bbbbbb’;
sqlite> create table a(ind int);
sqlite> .tables
a
sqlite> .quit
先尝试不输入密码,直接读取数据库,理论上讲是读不到数据,或者报错:

$ sqlcipher test.sqlite
SQLite version 3.7.14.1 2016-10-04 19:37:12
Enter “.help” for instructions
Enter SQL statements terminated with a “;”
sqlite> .tables
sqlite> .quit
尝试正确输入密码,应该成功读取:

$ sqlcipher test.sqlite
SQLite version 3.7.14.1 2016-10-04 19:37:12
Enter “.help” for instructions
Enter SQL statements terminated with a “;”
sqlite> PRAGMA key = ‘bbbbbb’;
sqlite> .tables
a
sqlite> .quit
上面三个流程都过说明编译成功!

给现有数据进行加密

如何给现有的sqlite文件进行加密,没有别的简单的方法:

1.先把数据导出:

$ sqlite3 ifood.sqlite
>.output ifood.sql
>.dump

2.创建一个新的加密的数据库:

$ sqlcipher ifood_lock.sqlite
sqlite> PRAGMA key = ‘androidstar’; # 设置密码

3.导入数据

>.read ifood.sql
如果项目中经常用到数据加密,可以写个脚步。

SQLCipher官网有详细的android项目中的使用教程,地址在:http://sqlcipher.net/sqlcipher-for-android/
实际项目中遇到的问题是密码设置不要含单引号,不然会解密不对。而且加密过后有一个弊端,就是程序会增加将近4M左右的大小,使你的apk包看起来比较大,但是为了数据安全,这点牺牲还是值得的!

sqlcipher 加密解密工具使用详解相关推荐

  1. python des解密_python实现DES加密解密方法实例详解

    本文实例讲述了python实现DES加密解密方法.分享给大家供大家参考.具体分析如下: 实现功能:加密中文等字符串 密钥与明文可以不等长 这里只贴代码,加密过程可以自己百度,此处python代码没有优 ...

  2. openssl_sign() 语法+RSA公私钥加密解密,非对称加密算法详解

    其实有时候觉得写博客好烦,就个函数就开篇博客.很小的意见事情而已,知道的人看来多取一举,或者说没什么必要,浪费时间,不知道的人就会很郁闷.技术就是这样的,懂的人觉得真的很简单啊,不知道的人真的好难.. ...

  3. php解析bt,PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解

    PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解 发布于 2017-09-08 20:05:36 | 124 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP( ...

  4. Fuzz工具使用详解

    Fuzz工具使用详解 (1)wfuzz 描述:wfuzz 是一款Python开发的Web安全模糊测试工具.简而言之就是wfuzz可以用在做请求参数参数类的模糊测试,也可以用来做Web目录扫描等操作. ...

  5. Php公钥加密data是空,php 生成加密公钥加密私钥实例详解

    php 生成加密公钥加密私钥实例详解 生成公钥私钥 win下必须要openssl.cof支持 liunx一般已自带安装 $config = array( //"digest_alg" ...

  6. DES加解密算法原理详解与实现

    [DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...

  7. 二维码加密解密工具——优密(手机版)正式上线!

    Lizcst Software Lab第一款Android平台应用软件--优密正式发布! 下面是软件的简介及功能特色: 优密--二维码加解密工具该工具是一款强大的二维码加密与解密扫码的手机软件,适用于 ...

  8. Java 文件(夹)加密解密工具(附带压缩功能)

    1 使用说明 CipherUtil.java ZipUtil.java ZipCipherUtil.java FileUtil.java FrmMain.java 1 使用说明 图1 主界面 图2 加 ...

  9. 基于Python实现的CTF Crypto加密解密工具

    纯小白,记录一下自己小学期内做的项目.基于Python实现一个能够对凯撒密码.维吉尼亚密码.栅栏密码.摩斯密码.Base64编码.Ascii编码.AES.DES.RSA.RC4的加密解密以及维吉尼亚密 ...

  10. ceph-dencoder工具使用详解

    文章目录 简介 使用 decode命令用法 encode 简介 ceph-dencoder工具是一个序列化编码.解码并且打印ceph数据结构的工具.它主要用来调试和测试ceph不同版本之间的兼容性问题 ...

最新文章

  1. GameMaker Studio从头开始学习设计和开发3款游戏
  2. 互联网协议系统介绍(转载)
  3. linux常用工具及命令
  4. 线性运算和非线性运算
  5. ptp输出内容包含什么_家庭装修的瓷砖价格如何?包含哪些内容呢?与什么有关?...
  6. java静态接口方法使用_使用静态方法对接口进行Java编程
  7. java 对手机号码进行校验
  8. 庄子(公元前369年-公元前286年)
  9. 云计算体系结构中soa构建层_云计算架构分为哪几层 云计算具体学什么
  10. office 论文 页码_毕业论文页码格式word操作
  11. 如何使用视频格式转换器将QLV格式转换成MP4
  12. Micropython——看门狗定时器(WDT类)
  13. 高效的word转换成pdf转换器
  14. 同一用户不同终端登录限制(附:同一浏览器不同用户登录解决方案)
  15. 2022年女性精致美学白皮书
  16. xilinx官方pcie dma例程 -xapp859仿真环境搭建
  17. 痞子衡嵌入式:ARM Cortex-M文件那些事(6)- 可执行文件(.out/.elf)
  18. onMeasure实例分析
  19. fpga实操训练(vga测试)
  20. TELNET协议笔记

热门文章

  1. arduino调试的流程图_Arduino 的调试以及相关问题
  2. 总结移动开发入行十周年
  3. 【得物技术】机器学习在图形验证码识别上的应用
  4. 【论文阅读】PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
  5. simulink方框_simulink模型引用
  6. 通过字节码分析this关键字以及异常表的重要作用
  7. thymeleaf 基础教程-阅读官方教程(二)
  8. multi-key map passed in for ordered parameter sort
  9. syslinux linux 启动盘,syslinux启动盘制作
  10. 可以快速提高编程能力的9个建议