SQLCipher 命令行使用 后台加密

这次遇到的问题是,手机终端需要加密sqlite的db文件,防止被别人看到相关数据,并且db文件在多个终端可以使用。

在网上找到的办法是使用第三方工具SQLCipher。

根据需求,要在后台系统生成相关加密完的db文件以供终端下载使用。

一开始也是一头雾水,在网上找了很多资料,写得不是很详细。

一、先把通用的编译过程写一下:

https://github.com/sqlcipher/sqlcipher下载zip包,在linux系统下编译运行。

1.解压
unzip -q sqlcipher-master.zip
cd sqlcipher-master

2.编译

./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
make


编译完就会出现一个sqlcipher的可执行文件。

二、使用SQLCipher

和sqlite差不多的用法

./sqlcipher test.db  #创建一个db文件

sqlite> PRAGMA key = 'test';  #设置密码

sqlite> .e  #退出


三、把没加密的db文件进行加密步骤:

1.先用sqlite打开db文件
sqlite3 test.db

 

2.把数据导成sql格式
sqlite> .output test.sql
sqlite> .dump
sqlite> .e

 

3.加密
./sqlcipher test2.db  #创建一个新的db文件
sqlite> PRAGMA key = 'test';  #设置密码
sqlite> .read test.sql  #导入数据
sqlite> .e  #退出


完成,生成的test2.db文件就是一个加密过的db文件了。

 

以上是前期使用过程,后面讲述遇到的问题。

1、如何判断是否有加密过?

./sqlcipher test.db #没加密过的
sqlite> .schema
CREATE TABLE XXXXXX...  #显示了表的创建语句

 

./sqlcipher test2.db #没加密过的
sqlite> .schema
Error: file is encrypted or is not a database

对于加密过的db文件,如果不先输入密码,后续关于数据库的操作都不能执行,都会出现Error: file is encrypted or is not a database错误。

 

2、生成的db文件使用问题

将生成的db文件发给终端,发现不能使用,报错都是Error: file is encrypted or is not a database。

终端生成一个db文件,放到另外一台手机上,也不能使用。

将生成的db文件放到另外一台服务器上使用,可以正常使用。怀疑是sqlcipher的版本不一致。在github上查看,下载的这个master版可能是v3.2.0的,又去下载tag为v3.0.0的编译运行,可以使用,再次去下载tag为v2.2.1的版本编译运行,db文件不能正常使用,于是确定,不同的版本生成的db文件可能不兼容。

再次尝试,2.2.1生成的db文件可以在终端正常使用,终端用的版本可能也是2.2的,于是,愉快地使用2.2.1的版本去生成db文件。

 

结束。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQLCipher是一个开源的SQLite扩展库,提供了对SQLite数据库进行加密和解密的功能。它允许用户在SQLite数据库上应用强大的加密算法,以保护敏感数据免受未经授权的访问。 SQLCipher命令行是在命令行界面下使用SQLCipher工具进行数据库操作的方式。要使用SQLCipher命令行,首先需要在系统上安装SQLCipher,并确保可执行文件路径被正确地添加到系统的环境变量中。 使用SQLCipher命令行时,可以执行各种数据库操作,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等。和传统的SQLite命令行类似,SQLCipher命令行使用SQL语句来操作数据库。 SQLCipher命令行使用方法与SQLite命令行类似,主要的区别在于SQLCipher命令行需要提供密钥才能打开加密的数据库。在使用SQLCipher命令行时,用户可以通过在命令行中输入密码或者通过命令行参数指定密码来提供密钥。密钥的正确性是打开数据库的关键,只有提供正确的密钥,才能成功解密数据库并执行相关的操作。 SQLCipher命令行提供了一种方便快捷的方式来操作和管理加密SQLite数据库。通过使用SQLCipher命令行,用户可以轻松地创建加密的数据库,对数据库进行操作,以及保护敏感数据的安全性。 ### 回答2: SQLCipher是一个加密SQLite数据库引擎,可以在命令行使用。以下是关于SQLCipher命令行的一些重要信息: 1. 安装SQLCipher:在使用SQLCipher之前,需要先安装它。可以去SQLCipher的官方网站下载适用于特定操作系统的安装包,并按照官方文档的指示进行安装。 2. 打开已加密的数据库:使用SQLCipher命令行时,可以使用以下命令打开已经加密的数据库: ```shell sqlcipher path/to/database.db ``` 其中,`path/to/database.db`是数据库文件的路径。 3. 设置密码:在打开数据库之前,需要提供密码来解密数据库。可以使用以下命令设置密码: ```shell PRAGMA key = 'password'; ``` 其中,`password`是你要设置的密码。 4. 执行SQL语句:一旦成功打开了加密的数据库,并设置了密码,就可以执行SQL语句了。例如,可以使用以下命令查询数据: ```shell SELECT * FROM table_name; ``` 这里的`table_name`是你要查询的表名。 5. 关闭数据库:在完成对数据库的操作后,可以使用以下命令关闭数据库: ```shell .exit ``` 这些是在SQLCipher命令行中的一些基本操作。通过这些命令,可以打开加密的数据库,设置密码,执行SQL语句,并最终关闭数据库。 ### 回答3: SQLCipher是一个加密SQLite数据库,它提供了对数据库的高级加密和安全性。命令行是一个在终端中执行命令的方式。SQLCipher命令行是指通过终端执行SQLCipher的命令和操作。 要在命令行使用SQLCipher,首先需要确保已经正确安装了SQLCipher,并设置好相关的环境变量。然后打开终端,进入到SQLCipher安装目录下的bin文件夹中。 在命令行中,可以使用以下命令来执行SQLCipher操作: 1. 创建或打开一个加密的数据库: $ sqlcipher path/to/database.db 2. 设置数据库的密码: > PRAGMA key='your_password'; 3. 执行数据库操作,如查询、插入、更新和删除数据: > SELECT * FROM table; > INSERT INTO table(column1, column2) VALUES(value1, value2); > UPDATE table SET column='new_value' WHERE condition; > DELETE FROM table WHERE condition; 4. 导入和导出数据库: > .output path/to/output.sql > .dump 5. 退出SQLCipher: > .quit 需要注意的是,在执行命令行操作时,应该确保数据库的密码和操作是正确的。另外,为了保证数据库的安全性,应该避免在明文中显示密码。可以在命令行使用以下命令来隐藏密码输入: $ stty -echo SQLCipher命令行提供了一种简单而灵活的方式来执行SQLCipher操作,可以通过终端直接与数据库进行交互和管理。这对于需要对数据库进行加密和保护的应用程序和系统来说,非常重要和有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值