天天看點

CentOS下php通過SQLCipher編譯sqlite3支援資料庫加密

最近由于項目需要,要對伺服器端生成的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伺服器,

下來進行測試,測試代碼:

<?php 

//建立一個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_r($result);

?>

如果可以列印出來結果,說明sqlite3已經重新編譯成功.在此基本上算是成功了,但是仍需要檢驗一下,生成的資料庫是否已經加密.可以将生成的test.sqlite用之前自己的一些工具打開試試,一般都會提示錯誤.這時候說明已經成功給sqlite加密.

順便說一下,官網上也有對android和IOS的支援操作步驟,可以在官網上檢視的到.