欢迎投稿

今日深度:

SQLite3:对SQLite3加密,其中sqleet依赖

SQLite3:对SQLite3加密,其中sqleet依赖


目录

一、sqleet 和 SQLite3MultipleCiphers

二、编译及使用 sqleet

2.1)clone sqleet代码

2.2)编译 sqleet

2.3)使用 sqleet 加密 sqlite3数据库

三、编译及使用 SQLite3MultipleCiphers

3.1)clone SQLite3MultipleCiphers 代码

3.2)编译 SQLite3MultipleCiphers

3.3)使用 SQLite3MultipleCiphers 加密 sqlite3 数据库


 

一、sqleet 和 SQLite3MultipleCiphers

发现两款不错的sqlite3开源加密工具:sqleet和SQLite3MultipleCiphers。

其中sqleet依赖于宏 SQLITE_HAS_CODEC 中的接口,但是这些接口只支持到sqlite-v3.31.1(Simplify the code by removing the unsupported and undocumented SQLITE_HAS_CODEC compile-time option),再往后的版本中 SQLITE_HAS_CODEC 宏里面的代码就都被删除了。这些接口的删除,导致了一批依赖这些接口的 sqlite3 加密软件受影响,于是就出现了支持新版 sqlite3的加密软件:SQLite3MultipleCiphers。

下面介绍一下这两款工具的使用。

二、编译及使用 sqleet

2.1)clone sqleet代码

sqleet github 地址:https://github.com/resilar/sqleet

clone 地址:https://github.com/resilar/sqleet.git

git clone https://github.com/resilar/sqleet.git

2.2)编译 sqleet

$ cd sqleet/
$ gcc -o sqleet sqleet.c shell.c  -lpthread -ldl

2.3)使用 sqleet 加密 sqlite3数据库

打开一个新的 sqlite3的数据库文件,使用 PRAGMA key 命令设置密码。

如果是打开一个已经有数据的未加密数据库,那么需要使用 PRAGMA rekey = 'a passphrase' 命命令进行加密。

数据库命令作用
新创建的空数据库key

1、对新创建的数据库设置密码

2、进入已加密的数据库时验证密码

已有数据的数据库rekey

1、对已加密的数据库重置密码

2、对已有数据但未加密的数据库设置密码

 

 

 

 

 

新创建一个数据库,并加密:

$ ./sqleet hello.db # 创建一个新数据库
sqlite> PRAGMA key = 'a passphrase';  # 加密这个新数据库
ok
sqlite> create table world (id int, name text);
sqlite> .q

加密一个已有数据但未加密的数据库:

$ ./sqleet hello.db
sqlite> PRAGMA rekey = 'a passphrase'; # 将一个未加密的数据库进行加密
ok
sqlite> .q

修改一个已加密数据库的密码:

$ ./sqleet hello.db 
sqlite> PRAGMA key = 'a passphrase'; # 输入当前密码进行验证
ok
sqlite> PRAGMA rekey = 'another passphrase'; # 设置新的密码
ok
sqlite> .q

三、编译及使用 SQLite3MultipleCiphers

3.1)clone SQLite3MultipleCiphers 代码

SQLite3MultipleCiphers 官网地址:https://utelle.github.io/SQLite3MultipleCiphers/

Github地址:https://github.com/utelle/SQLite3MultipleCiphers

git clone https://github.com/utelle/SQLite3MultipleCiphers.git

3.2)编译 SQLite3MultipleCiphers

cd SQLite3MultipleCiphers/
autoreconf
mkdir build-gtk
cd build-gtk
../configure
make

编译完成后,二进制可执行文件位置:SQLite3MultipleCiphers/build-gtk/sqlite3shell

3.3)使用 SQLite3MultipleCiphers 加密 sqlite3 数据库

使用 SQLite3MultipleCiphers 编译后的命令 sqlite3shell 对数据库加密的方式和 sqleet 一样,也是通过 PRAGMA key 和 PRAGMA rekey 进行加密和重置密码。

操作过程如下:

$ ./sqlite3shell hello.db # 创建一个新的数据库
sqlite> PRAGMA key='a passphrase'; # 设置加密数据库的密码
ok # 显示 ok 说明设置密码成功
sqlite> create table world (id int, name text); # 创建一些数据
sqlite> .q # 退出数据库
$ ./sqlite3shell hello.db # 再次进入数据库,相当于进入了一个已经加密的数据库
sqlite> .tab # 在不输入密码的情况下查看当前的表
Error: file is not a database # 不输入密码的情况下,解析数据库失败
sqlite> PRAGMA key = 'a passphrase'; # 使用密码进行认证
ok # 输出 ok,说明认证成功
sqlite> .tab # 查看数据库中的表
world # 查看表成功,目前数据库中只有表 world
sqlite> .q # 退出数据库

 

www.htsjk.Com true http://www.htsjk.com/SQLite/45753.html NewsArticle SQLite3:对SQLite3加密,其中sqleet依赖 目录 一、sqleet 和 SQLite3MultipleCiphers 二、编译及使用 sqleet 2.1clone sqleet代码 2.2编译 sqleet 2.3使用 sqleet 加密 sqlite3数据库 三、编译及使用 SQLite3Multip...
评论暂时关闭