GitHub地址

EncryptSqlite3

加密sqlite3数据库,产生的数据库文件别人打不开。

实现原理

  1. 在写入文件前对每个字节加密,这样存入文件的就是加密后的数据。
  2. 将从文件读取的数据每个字节都解密,这样就得到正确数据用于处理。
  3. 可以搜索c/sqlite3.c和go/sqlite3-binding.c这两个源码中的(ENCRYPT_SQLITE3)宏,分析代码就行。

使用方法

在./c/和./golang/目录中都有build.bat和build.sh
在windows环境使用cmd进入目录执行.\build.bat即可
在Linux环境进入目录后执行./build.sh即可
可以使用编译后的官方控制台程序./c/sqlite3 t.db来通过命令行读写sqlite3文件

不足之处

由于写入和读取位置由sqlite3控制,因此加解密都只能为针对单字节。因为大多数对称加密都需要从头开始加解密,像AES有些模式后面加密的数据依赖前面加密的结果。所以我在本项目中实现的仅仅是将每个字节和密钥进行异或,这是最简单的单字节加解密。当然如果别人知道这个这个规则,最多尝试255次就能破解。当然我有一些自己的想法,比如做一些随机数混淆单字节数据,但需要设计可靠的加解密逻辑,有兴趣的可以自己尝试吧。

加密sqlite3数据库文件的更多相关文章

  1. Cocos2dx使用wxsqlite开源加密SQLite3数据库

    最近使用wxsqlite加密sqlite3数据库,刚开始折腾好几天,在xcode上一直编译不通过,后来在sqlite3.c找到配置,编译顺利通过,太激动了,哈哈,废话少说!总结一下android和io ...

  2. Qt5使用QSqlQuery读写sqlite3数据库

    概述 本文将介绍使用 Qt5使用QSqlQuery读写sqlite3. 设计初衷: 项目需要使用配置文件,配置文件使用的是sqlite3 , 这是V1.0.0, 后期增加其他功能. 需要C++11支持 ...

  3. IOS 使用wxsqlite3为sqlite3数据库加密

    1,下载wxsqlite3 地址http://jaist.dl.sourceforge.net/project/wxcode/Components/wxSQLite3/wxsqlite3-3.1.1. ...

  4. sqlite3 数据库使用

    首先,通过官网下载sqlite3.h和sqlite3.c两个文件,用于调用里面的api函数操作数据库. 这里也提供链接地址下载:http://pan.baidu.com/s/1qWzjqPY 其中里面 ...

  5. 《Python操作SQLite3数据库》快速上手教程

    为什么使用SQLite数据库? 对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是大多数复杂的数据驱动的应用需要全功能的关系型数据库.SQLite的目标则是介于两者之间的中小系统.它有以 ...

  6. 【转】去掉Sqlite3 数据库中的前后回车换行符(newline)

    原文: http://www.blogjava.net/pts/archive/2013/06/10/400... 时间: 2013-06-10 转自:http://www.ityuedu.com/a ...

  7. 人人都是 DBA(V)SQL Server 数据库文件

    SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb. SELECT [name] ,database_id ,suser_sname ...

  8. DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等

    DotNet 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器. ...

  9. [转]正确使用SQLCipher来加密Android数据库 - 朝野布告

    参考文档:http://www.tuicool.com/articles/eYNFbuA Android本身自带有不加密的数据库SQLite,如果要保存密码之类的敏感数据在本地的话方法一是使用字段加密 ...

随机推荐

  1. Mysql数据库扩展

    安装跟卸载 Mysql安装 下载Mysql源安装包 1   wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.r ...

  2. sql注入 --显错注入

    前提知识 数据库:就是将大量数据把保存起来,通过计算机加工而成的可以高效访问数据库的数据集合数据库结构:库:就是一堆表组成的数据集合表:类似 Excel,由行和列组成的二维表字段:表中的列称为字段记录 ...

  3. Linux驱动之设备树的基础知识

    前期知识   1. 如何编写一个简单的Linux驱动(一)--驱动的基本框架   2. 如何编写一个简单的Linux驱动(二)--设备操作集file_operations   3. 如何编写一个简单的 ...

  4. 解读Java NIO Buffer

    从jdk1.4开始,java中引入了nio包,提供了非阻塞式的网络编程模型,提供网络性能.nio中核心组件有三个:channel.buffer.selector.这里主要探讨buffer的概念和使用. ...

  5. 数据库:浅谈DML、DDL、DCL的区别

    简介 SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言.它功能强,效率高,简单易学易维护(迄今为止,我还没见过比它还好学的语言).然而SQL语言由于以上优点,同时也出现了这样一个问题:它是 ...

  6. VC 编译 MATLAB 的 mex 文件

    VC 编译 MATLAB 的 mex 文件mex 文件是 MATLAB 调用其他程序设计语言程序或算法的接口.在 Windows 环境中,mex 文件是扩展文件名为 DLL 的动态链接库,可以在 m ...

  7. awk的一些认识

    awk awk '{pattern + action}' {filenames} 当我们所指定的规则脚本过长的时候,我们可以使用-f的选项加上我们的脚本文件.再复杂点我们可以直接调用shell脚本,就 ...

  8. 码云+Git配置仓库

    版本库Git安装 概述 Git是一个开源的分布式控制系统,可以有效高速的处理从很小的到非常大的项目版本管理,是目前使用范围最广的版本管理工具. 下载安装 下载后傻瓜式一键安装,建议安装在英文目录下,安 ...

  9. Python-序列切片原理和切片协议-[start:end:step] __getitem__

    切片原理图(顾头不顾尾的正则原理) # [0:1] 其实只取到C, 取e则 [-1:], 如果步长为负数则倒过来取,从第几个往回取 name = "ChuiXue" print(n ...

  10. Centos-远程拷贝-scp

    scp 依赖ssh协议,实现从哟个linux系统拷贝到另一个linux系统 格式 scp -P port localPath user@IP:targetPath # 如果拷贝的是文件则需要传递 -r ...