在嵌入式上使用QT开发用户界面时候,少不了使用数据库。但是Qt自带的sqlite3数据库是没有加密的,因此当保存一些敏感信息的时候很容易暴漏个人隐私。网上查了很多资料,此处做下总结方便大家学习。
1.加密方式分类
1.1)使用SQLCipher加密。
1.2)使用wxSqlite加密。
2.使用wxSqlite加密步骤
2.1)下载并解压文件
下载地址:Releases · utelle/wxsqlite3 · GitHub?
此处我下载的是3-4.5.1,解压后如下:
?由于文件众多,我们不用看其他的目录,只需要关注sqlite3secure目录即可。
2.2)把sqlite3secure目录下文件拷贝到自己新建的QT工程中,并添加到自己工程。
需要添加的文件我新建了一个?wxsqlite3.pri代码如下
CONFIG(release, debug|release):DEFINES *= NDEBUG
DEFINES += SQLITE_HAS_CODEC #一定要加上这个预编译宏
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
HEADERS += \
$$PWD/sqlite3.h \
$$PWD/codec.h \
$$PWD/rijndael.h \
$$PWD/sha2.h \
$$PWD/fastpbkdf2.h \
$$PWD/mystdint.h \
$$PWD/sha1.h \
$$PWD/sqlite3secure.h \
$$PWD/sqlite3userauth.h
SOURCES += \
$$PWD/sqlite3.c \
$$PWD/sqlite3secure.c \
$$PWD/codec.c \
$$PWD/rijndael.c \
$$PWD/codecext.c \
$$PWD/sha2.c \
$$PWD/chacha20poly1305.c \
$$PWD/fastpbkdf2.c \
$$PWD/md5.c \
$$PWD/rekeyvacuum.c \
$$PWD/sha1.c \
$$PWD/userauth.c
2.3)增加中间层接口?
?接口文件放到下载链接。
3.使用成果
3.1)在工程中随便增加两条数据
3.2)使用sqlite3本尊来打开该数据库如下?
?
不管是不是输入key,结果都是一样,打不开数据库。
3.3)使用我们编译的shell文件打开数据库如下
所有代码上传至:qt使用wxsqlite对sqlite3进行加密
|