最近由于项目需要,要对服务器端生成的sqlite进行加密.服务器后台用的是php写的,操作系统为CentOS.开源的sqlite3预留了数据库加密接口,但是没有实现.于是在网上找到了SQLCipher,它对sqlite3未实现的加密功能进行了实现,并且可以通过重新编译PHP的sqlite3扩展,从而支持sqlite数据库加密.具体操作,可参考官网的步骤进行,地址:https://www.zetetic.net/sqlcipher/sqlcipher-for-php/
官网的操作,系统是用的Ubuntu,在这里可以将相应命令转换成CentOS下用的即可.参照官网上的操作步骤,便可以编译成功,
编译成功后,会生成sqlite3.so,直接替换掉之前服务器php扩展中得sqlite3.so即可(替换前最好做个备份).替换完成后,重启apache服务器,
下来进行测试,测试代码:
//创建一个test.sqlite的文件,密码为12345678,参数6表示如果有就打开,没有就创建.具体的信息可参照源文件中sqlite3.c进行相关查看
$db=new Sqlite3("test.sqlite",6,"12345678");
$db->exec("create table mytest (name varchar(200) )");
$db->exec("insert
into mytest (name) values ('aaaa')");
$result
= $db->query('SELECT * FROM mytest');
print_f($result);
?>
如果可以打印出来结果,说明sqlite3已经重新编译成功.在此基本上算是成功了,但是仍需要检验一下,生成的数据库是否已经加密.可以将生成的test.sqlite用之前自己的一些工具打开试试,一般都会提示错误.这时候说明已经成功给sqlite加密.
顺便说一下,官网上也有对android和IOS的支持操作步骤,可以在官网上查看的到.
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了CentOS下php通过SQLCipher编译sqlite3支持数据库加密,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。