sqlite-sqlcipher编译

源码地址:https://github.com/sqlcipher/sqlcipher.git

分支v4.5.2在windows10编译

1.在开始菜单中找到vs的开发工具命令提示,使用nmake工具生成sqlite3.c

1
nmake /f Makefile.msc sqlite3.c TOP=.

2.使用cl编译成dll库

1
cl -Iopenssl\install\include sqlite3.c -DSQLITE_API=__declspec(dllexport) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC /MT -link -dll -out:sqlite3.x86.dll -LIBPATH:openssl\install\lib libeay32.lib ssleay32.lib

3.使用cl编译成exe,命令行操作sqlite数据库

1
cl -Iopenssl\install\include shell.c sqlite3.c -DSQLITE_API=__declspec(dllexport) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC -DNDEBUG /MT -link -W4 -O2 -Zi -out:sqlcipher.exe -LIBPATH:openssl\install\lib libeay32.lib ssleay32.lib

加密已有库

1
2
3
4
5
sqlcipher.exe

ATTACH DATABASE '1.db' AS encrypted KEY 'thisiskey';
SELECT sqlcipher_export('encrypted');
DETACH DATABASE encrypted;

打开已加密库

1
2
3
4
sqlcipher.exe "1.db"

PRAGMA key='thisiskey';
.schema;

修改密码

1
2
3
4
sqlcipher.exe "1.db"

PRAGMA key='thisiskey';
PRAGMA rekey='thisiskey2';

解密库

1
2
3
4
5
6
7
sqlcipher.exe "1.db"

PRAGMA key='thisiskey';

ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';
SELECT sqlcipher_export('plaintext');
DETACH DATABASE plaintext;