首页 > 数据库 >解决QT 中Sqlite数据库添加加密功能

解决QT 中Sqlite数据库添加加密功能

时间:2022-12-07 09:13:33浏览次数:41  
标签:Sqlite 加密 QT .. sqlite SQLITE sqlite3

解决QT 中Sqlite数据库添加加密功能 是本文要介绍的内容,Sqlite数据库默认没有加密功能,对一些需要对工程文件进行保密的场合产生了不便,本文以QT4.4.3为例,对QT 源代码中的sql模块进行修改,为qt集成的sqlite数据库添加了加密功能.

1、 /wxsqlite3_prj/sqlite3目录 下的文件进行编译生成 sqlite3.lib

2、将 sqlite3.h 和 上一步骤生成的sqlite3.lib 拷贝到目录 ?:/Qt/4.4.3/src/plugins/sqldrivers/sqlite 中.

3、将 ?:/Qt/4.4.3/src/plugins/sqldrivers/sqlite 目录下的sqlite.pro文件修改为:

TARGET  = qsqlite 
 
# 不使用qt自带的sqilte源码文件,而是使用外部生成的库  
win32:LIBS += sqlite3.lib  
#HEADERS  = ../../../sql/drivers/sqlite/qsql_sqlite.h  
SOURCES  = smain.cpp /  
    ../../../sql/drivers/sqlite/qsql_sqlite.cpp  
 
!system-sqlite:!contains( LIBS, .*sqlite.* ) {  
    CONFIG(release, debug|release):DEFINES *= NDEBUG  
    DEFINES += SQLITE_CORE SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE   
#    INCLUDEPATH += ../../../3rdparty/sqlite  
#    SOURCES += ../../../3rdparty/sqlite/sqlite3.c  
} else {  
    LIBS *= $$QT_LFLAGS_SQLITE  
    QMAKE_CXXFLAGS *= $$QT_CFLAGS_SQLITE  
}  
include(../qsqldriverbase.pri) 

4、修改 ?:/Qt/4.4.3/src/sql/drivers/sqlite 目录下的文件 qsql_sqlite.cpp

 需要修改的函数 bool QSQLiteDriver::open(),函数体修改为:

bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, const QString &, int, const QString &conOpts)  
{  
    if (isOpen())  
        close();  
 
    if (db.isEmpty())  
        return false;  
    if (sqlite3_open16(db.constData(), &d->access) == SQLITE_OK) {  
        sqlite3_busy_timeout(d->access, qGetSqliteTimeout(conOpts));  
        setOpen(true);  
        setOpenError(false);  
          
      //添加加密功能  "Trucc"为加密密匙,5为密匙长度  
   sqlite3_key( d->access, "Trucc", 5);  
 
   return true;  
    } else {  
        setLastError(qMakeError(d->access, tr("Error opening database"),  
                     QSqlError::ConnectionError));  
        setOpenError(true);  
        return false;  
    }  
} 

 

 

5 编译 ?:/Qt/4.4.3/src/plugins/sqldrivers/sqlite 下的工程, 在目录 ?:/Qt/4.4.3/plugins/sqldrivers 中生成添加加密功能的sqlite相应库文件。

标签:Sqlite,加密,QT,..,sqlite,SQLITE,sqlite3
From: https://www.cnblogs.com/tingtaishou/p/16962045.html

相关文章

  • QT实现串口调试器
    #include"mainwindow.h"#include"ui_mainwindow.h"#include"QSerialPort"#include"QSerialPortInfo"#include"QMessageBox"#include"QDateTime"MainWindow::MainWindo......
  • 在Node.JS中调用JShaman接口,实现JS代码加密
    在Node.JS中调用JShaman接口,实现JS代码加密。使用axios库实现https的post请求,代码如下:constaxios=require("axios");constjshamanConfig={//源码"js_code":......
  • 用户密码在后台数据库中加密存储方式
    总的来讲,目前公认比较安全的存储密码方式是PBKDF2,BCrypt或SCrypt算法产生的密码。历史上密码加密存储经历了如下几个阶段:单向hash(MD5)做单向的hash加密,以MD5和sha......
  • Android实验十——使用SQLite数据库存储数据
    一、实验要求和目的掌握SQLite数据库的操作方法;掌握SQLiteOpenHelper类的使用。掌握Lsitview的使用。二、实验环境部署有AndroidStudio和AndroidSDK的主机;建议......
  • Qt程序启动时会出现一闪而过的小窗口怎么办
    1.问题描述,开发程序时,会自定义一些窗口,字窗口,嵌入窗口,弹出窗口等,启动程序时会一闪而过显示一些小窗口;怎么解决?  2.解决办法因为自定义了一些窗口,没有指定父类窗口,而......
  • QtCore: No such file or directory
    系统环境:Fedora10用QT编写程序,出现以下错误:hello.h:4:17:error:QtCore:Nosuchfileordirectoryhello.h:5:16:error:QtGui:Nosuchfileordirectoryhello.h:12:......
  • java 使用hutool工具进行MD5加密
    引入依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.5</version></dependency>MD5加密publicstati......
  • qt 窗口可拖动
    参考:https://blog.csdn.net/qq_45254369/article/details/125878621左键按住,拖动窗口头文件:#ifndefFRAME_H#defineFRAME_H#include<QFrame>namespaceUi{cla......
  • 【转载】你真的了解 RSA 加密算法吗?
    作者:小傅哥博客:https://bugstack.cn源码:https://github.com/fuzhengwei/java-algorithms沉淀、分享、成长,让自己和他人都能有所收获!......
  • Qt音视频开发05-保存视频文件(yuv/h264/mp4)
    一、前言和音频存储类似,视频的存储也对应三种格式,视频最原始的数据是yuv(音频对应pcm),视频压缩后的数据是h264(音频对应aac),由于很多播放器或者早期的播放器不支持直接播放h26......