window系统下,使用sqlcipher工具加、解密sqllite数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wengpanfeng/article/details/78406172
今天使用sqlcipher加密sqllite数据库时转弯转进了误区,作为小白,就用小白的方式来记录一下使用该工具一些心得。
首先,从网上下载了一个sqlcipher-3.0.1-windows ,在这里附上下载地址:https://pan.baidu.com/s/1amtabD-jVRdkomKKGnpjgA

基本原理
现在有三个数据库【数据库名称随意】
origin.db,这个是源数据库,也就是你想要加密的数据库。
encrypted.db ,这个加密后的数据库
plaintext.db,这个是解密后的数据库
加密:把源数据库里面的所有数据,复制到一个已经加密的数据库encrypted.db中,encrypted.db这个数据库是运行命令的时候生成的,并且是加密的。
解密:把加过密的数据库encrypted.db里面所有的数据拷贝到plaintext.db数据库中,plaintext.db是运行命令的时候生成的,并且没有密码。

使用sqllite打开plaintext.db,这里面的内容和源数据库中内容一致。
以上就是加密和解密的过程。

下面就介绍使用命令进行加密和解密。

1.解压下载好的工具。
bin目录里面的结构:
这里写图片描述
2.打开命令行【win+R ->cmd】
使用命令打开工具所在的文件夹,我的文件夹是:E:\360安全浏览器下载\AAA\sqlcipher-windows\bin
这里写图片描述
输入命令1:sqlcipher-shell64.exe origin.db 【完成之后按Enter键】
输入命令2:ATTACH DATABASE ‘encrypted.db’ AS encrypted KEY ‘thisiskey’; 【Enter】
输入命令3:SELECT sqlcipher_export(‘encrypted’); 【Enter】
输入命令4:DETACH DATABASE encrypted; 【Enter】
这里写图片描述
上述命令完成之后,就完成了一个加密的过程。接下来解释一下上面的命令:
命令1,使用工具sqlcipher-shell64.exe ,空格之后,后面紧跟着的是你要操作的源数据库。
命令2,新建一个数据库文件encrypted.db,并打开连接。这里encrypted.db是一个加密的db文件
encrypted:是该数据库的别名,
thiskey:是新建的这个数据库文件的密码
命令3,调用了工具的一个接口,该接口的作用就是把上面操作的源数据库origin.db里面的所有数据拷贝到encryted.db当中。
命令4,断开连接

解密:把加密的数据库encryted.db里面所有的数据拷贝到未加密的数据库plaintext.db中。
使用window命令行打开到bin目录文件夹
输入命令1,sqlcipher-shell64.exe encryted.db 【Enter】
输入命令2,PRAGMA key = ‘thisiskey’;
输入命令3,ATTACH DATABASE ‘plaintext.db’ AS plaintext KEY ‘’;
输入命令4,SELECT sqlcipher_export(‘plaintext’);
输入命令5,DETACH DATABASE plaintext;
这里写图片描述
命令解释:
命令1,要操作加密的数据库
命令2,输入加密数据库的密码
命令3,新建了一个数据库plaintext.db, 密码是空【两个单引号中间是空】
命令4,拷贝加密数据库中所有的数据到plaintext.db中
命令5,断开连接
上述命令完成之后就完成了一个解密的过程。
使用sqlite打开plaintext.db发现里面数据和源数据库中的文件一致

我的误区:
1.一开始完成加密后,我以为是origin.db这个文件被加密。其实这个数据库是没有被加密的。加密的是encryted.db这个数据库
2.解密完成之后,使用sqlite打开encryted.db,并输入密码,就是打不开。其实解密不是对encryted.db进行解密,而是把encryted.db里面内容拷贝到新的数据库中。
3,要使用window命令行操作。

上述误区1,2是因为没有明白加,解密的原理导致走了弯路,所以我把原理写在了最前面。
上面写的有点啰嗦,只是想让小白能够看懂,大神略过,如果有不对的地方也请大神不吝赐教!

猜你喜欢

转载自blog.csdn.net/wengpanfeng/article/details/78406172