首页 > 数据库 >wxsqlite3 的使用, sqlite3 加密库 编译和测试

wxsqlite3 的使用, sqlite3 加密库 编译和测试

时间:2023-04-09 10:22:45浏览次数:35  
标签:加密 wxsqlite3 COMPANY rc db sql sqlite3 AGE

 

编译库文件:
1. 用VS2010 建立一个控制台工程sqlite3,选项为静态库,不包含预编译头。
2. 把 wxsqlite3-4.5.1.zip\wxsqlite3-4.5.1\sqlite3secure\src 下所有的文件复制到工程的工作目录
3. 把sqlite3.h和sqlite3secure.c加入工程
4. 工程配置属性 AllConfigurations,C/C++, 预处理, 预处理定义, 中加入
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_HAS_CODEC=1
SQLITE3ENCRYPT_EXPORTS
SQLITE_ENABLE_FTS3
SQLITE_ENABLE_FTS3_PARENTHESIS
SQLITE_SECURE_DELETE
SQLITE_SOUNDEX
CODEC_TYPE=CODEC_TYPE_AES256
5. BatchBuild 编译出2个版本的静态库,奇怪release版本居然比debug大一些
6. 把sqlite3.h和sqlite3.lib 复制出来备用。

测试程序:
1. 用VS2010 建立一个控制台工程sqlite3test,选项全为默认。
2. 把sqlite3.h和sqlite3.lib 复制复制到工程的工作目录
3. 把sqlite3.h和sqlite3.lib加入工程
4. 工程配置属性 AllConfigurations,C/C++, 预处理, 预处理定义, 中加入上面库编译时用的一堆开关
5. 修改sqlite3test.cpp ,加入头文件,在网上抄一段测试程序

// sqlite3test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include "sqlite3.h"

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
    int i;
    for(i=0; i<argc; i++){
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}

static int callback2(void *data, int argc, char **argv, char **azColName){
    int i;
    fprintf(stderr, "%s: ", (const char*)data);
    for(i=0; i<argc; i++){
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
    printf("\n Test begion:\n");

    sqlite3 *db = NULL;
    char *zErrMsg = 0;
    int  rc = 0;
    char *sql = NULL;
    const char* data = "Callback function called";
    
    rc = sqlite3_open("test.db",&db);  //打开数据库,没有则创建  
    printf("\n rc = %d", rc); 

//就是这里加解要调用函数,其他和SQLite3一样操作,先试试操作 rc = sqlite3_key(db,"password",8); //使用密码,第一次为设置密码,以后为解密,最后是密码长度 printf("\n rc = %d", rc); //rc = sqlite3_rekey(db,NULL,0); //清空密码 //rc = sqlite3_rekey(db,"password2",9); //修改密码 //创建一张表 sql = "CREATE TABLE COMPANY(" \ "ID INT PRIMARY KEY NOT NULL," \ "NAME TEXT NOT NULL," \ "AGE INT NOT NULL," \ "ADDRESS CHAR(50)," \ "SALARY REAL );"; rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); //插入一些记录 sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (1, 'Paul', 32, 'California', 20000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );" \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );"; rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); //查询记录,并在回调函数中打印记录 sql = "SELECT * from COMPANY"; rc = sqlite3_exec(db, sql, callback2, (void*)data, &zErrMsg); if( rc != SQLITE_OK ) { printf("SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } else { printf("Operation done successfully\n"); } //关闭数据库 sqlite3_close(db); system("pause"); return 0; }

 

测试结果:

 

 

标签:加密,wxsqlite3,COMPANY,rc,db,sql,sqlite3,AGE
From: https://www.cnblogs.com/xgz21/p/17299900.html

相关文章

  • ssh服务支持弱加密算法
    详情描述:远程SSH服务器配置为使用arcfour流密码或无任何密码。RFC4253不建议使用arcfour弱算法。https://tools.ietf.org/html/rfc4253#section-6.3解决方案:解决方法:*在SSH会话中仅使用CTR模式加密算法,如AES-CTR。https://tools.ietf.org/html/rfc4253#section-6.3方案......
  • 基于FPGA的AES加密解密vivado仿真,verilog开发,包含testbench
    1.算法描述         AES,高级加密标准,是采用区块加密的一种标准,又称Rijndael加密法.严格上来讲,AES和Rijndael又不是完全一样,AES的区块长度固定为128比特,秘钥长度可以是128,192或者256.Rijndael加密法可以支持更大范围的区块和密钥长度,Rijndael使用的密......
  • OpenBSD 安装器引进引导式磁盘加密功能
    导读全盘加密在当今的计算环境中非常重要,但仍有一些操作系统没有提供在安装时设置加密磁盘的简单且流线型的方式。Linux 发行版OpenBSD就是其中之一。不过根据OpenBSD代码仓库近期的合并记录,他们即将在安装程序中添加引导式磁盘加密(GuidedDiskEncryption)选项。......
  • PGP加密
    项目中信息传输的安全性,是通过对信息进行非对称加密实现的,这里非对称加密,我们使用了PGP加密。PGP(PrettyGoodPrivacy,优良保密协议)是一套用于讯息加密、验证的应用程序。加密过程是由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成。每个步骤均支持几种算法,用户......
  • 构建区块链和加密货币  全栈版
    构建区块链和加密货币| 全栈版全栈区块链+加密课程!使用Node.js、Express、React等的后端+前端!课程英文名:BuildaBlockchain&CryptocurrencyFull-StackEdition此视频教程共6.7GB,中英双语字幕,画质清晰无水印,源码附件全课程地址:https://xueshu.fun/1472演示地址:htt......
  • 密电加密
    题目描述先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:"A"转化"B","B"转化为"C",......"Z"转化为"a","a"转化为"b",......,"z"转化为"A",其它字符不加密。编写程序,加密给定字符串。 输入格式......
  • Flash加密解密(一)——doswf混淆还原
     研究了一段时间的加密解密技术,对比其他类型的软件加密,swf加密方法是非常有限的,想要彻底保护swf十分困难。而且随着技术的进步,个人认为swf加密技术难以抵挡解密技术的发展,只能在一定程度给予保护。这次主要带大家分析doswf中最简单的混淆处理。后续我会给大家介绍使用doswf最强加......
  • Flash加密解密(三)——特殊混淆让asv2010解析代码失败
    1.Flash加密解密(一)——doswf混淆还原2.Flash加密解密(二)——Doswf生成代码分析3.Flash加密解密(三)——特殊混淆让asv2010解析代码失败从前面两节的分析可以看出,脆弱的swf文件极其容易被一些现成的工具反编译回可执行源代码。一旦可以进行动态调试,那么这个文件将被他人掌控,即使你使用......
  • Postman报文进行加密之AES
    Postman自带的加密函数是cryptoJS能够实现AES+Base64加密,还是用到Postman中的Pre-requestScript。Pre-requestScript是指在发送报文前执行的脚本,用于对请求包中的各种参数做一些个性化的处理。接上篇文章,实际获取的sText签名需要传递给源报文参数sign,报文内容如下signText,把......
  • PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)
    一、大体流程图二、PHP项目文件加密 下表列出了Zend产品中的PHP版本及其内部API版本和Zend产品版本。如何加密请往后看三、如何使用第一步:确认当前环境AmaiPhalcon前,请确认您具备以下两个条件,如果您的环境不满足此条件,建议您对系统环境进行重新配置。条件1:PHP版本在5.5.X以上(......