当前位置:Gxlcms > 数据库问题 > 给 Qt sqlite 增加加密功能

给 Qt sqlite 增加加密功能

时间:2021-07-01 10:21:17 帮助过:21人阅读

/**
* @brief 设置数据库密码
* @param key - 密码
*/
virtual bool setKey(const QString& key);

/**
* @brief 重置数据库密码
* @param key - 密码
*/
virtual bool resetKey(const QString& key);
  • 打开 qtbase\src\sql\kernel\qsqldriver.cpp,给新增的两个接口增加一个默认实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    bool QSqlDriver::setKey(const QString&)
    {
    return false;
    }

    bool QSqlDriver::resetKey(const QString&)
    {
    return false;
    }
  • 打开 qtbase\src\sql\drivers\sqlite\qsql_sqlite_p.h,继承那两个新的接口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /**
    * @brief 设置数据库密码
    * @param key - 密码
    */
    bool setKey(const QString& key);

    /**
    * @brief 重置数据库密码
    * @param key - 密码
    */
    bool resetKey(const QString& key);
  • 打开 qtbase\src\sql\drivers\sqlite\qsql_sqlite_p.cpp,继承那两个新的接口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    bool QSQLiteDriver::setKey(const QString& key)
    {
    Q_D(QSQLiteDriver);
    if (d->access)
    {
    return (SQLITE_OK == sqlite3_key(d->access, key.toStdString().c_str(), key.toStdString().size()));
    }

    return false;
    }

    bool QSQLiteDriver::resetKey(const QString& key)
    {
    Q_D(QSQLiteDriver);
    if (d->access)
    {
    return (SQLITE_OK == sqlite3_rekey(d->access, key.toStdString().c_str(), key.toStdString().size()));
    }

    return false;
    }
  • 编译qt

    动态编译 Qt 5.6
    静态编译 Qt 5.6

     

    http://wangjie.rocks/2016/05/10/qt-sqlite-cipher/

    给 Qt sqlite 增加加密功能

    标签:ted   span   return   zip   5.6   编译   keyword   word   code   

    人气教程排行