先不用管上面的编译错误,创建crypt.c和crypt.h,用来实现加密解密函数和相应接口的定义。

crypt.c里实现了加密解密函数,代码如下:

#include "crypt.h"

#include "memory.h"

/***********

关键加密函数

***********/

int My_Encrypt_Func(unsigned char * pData, unsigned int data_len,

unsigned char * key, unsigned int len_of_key)

{

unsigned int i;

unsigned char bit, val;

for (i = 0; i < data_len; i++)

{

val = ~(*pData);

*pData = val;

pData++;

}

return 0;

}

/***********

关键解密函数

***********/

int My_DeEncrypt_Func(unsigned char * pData, unsigned int data_len,

unsigned char * key, unsigned int len_of_key)

{

unsigned int i;

unsigned char bit, val;

for (i = 0; i < data_len; i++)

{

val = ~(*pData);

*pData = val;

pData++;

}

return 0;

}

这里加密解密函数就是简单的采用了求反的操作,目的是用来演示加密和解密。以后实际运用中把这两个函数内的算法修改为自己的加密解密算法即可。

注意:这里的加密解密函数实际上没有用到Key值,因此加密后使用任意Key值均可以解开数据库,但是加密后,用第三方工具是不能直接打开的。

crypt.h用来声明加密解密函数的定义,以便sqlite3.c包含加密解密接口,代码如下:

/**

* 加密函数

*/

int My_Encrypt_Func(unsigned char * pData, unsigned int data_len,

unsigned char * key, unsigned int len_of_key);

/**

* 解密函数

*/

int My_DeEncrypt_Func(unsigned char * pData, unsigned int data_len,

unsigned char * key, unsigned int len_of_key);

注意:网上的代码中,参数key定义为“const char *”类型,与sqlite3.c代码一起编译时会有错误,这里按照sqlite3.c中的类型修改为“unsigned char *”类型。

本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/940812,如需转载请自行联系原作者

SQLite 3.7.13的加密解密(三)—— 创建加密解密函数相关推荐

  1. 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )

    文章目录 一.加密类型 二.加密解密三要素 三.加密应用场景 四.散列函数 一.加密类型 数据加密操作 分为 对称加密 和 非对称加密 ; 对称加密 : 加密密钥 与 解密密钥 相同 ; 非对称加密 ...

  2. [转载]MaxtoCode对.Net程序加密的原理及解密探讨三(实例解密)

    标 题: [原创]MaxtoCode对.Net程序加密的原理及解密探讨三(实例解密) 作 者: rick 时 间: 2006-09-29,23:16:28 链 接: http://bbs.pediy. ...

  3. 移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络

    加qq1126137994与微信:liu1126137994 一起学习更多技术! 现在的无线网络基本都是 WPA/WPA2 加密方式的,当我们在嵌入式Linux平台要实现无线网卡连接无线网时,我们需要 ...

  4. java rsa加密 加签_RSA加密解密与加签验签

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...

  5. bfv同态加密_三、全同态加密-飞马(section 1)

    Hello, 大家好,我是你们的"安全六三". 又见面啦!今儿有知友喊我"三哥",嗯... 突然想改名字了. 为什么不继续更BGV? 别问,问就是懒得更~~,开 ...

  6. 三种加密方式: sha1加密、MD5加密、Base64加密 (附H5源码和js源码)

    js的加密没特别多的办法,常见的就三种, MD5加密.Base64加密和sha1加密 一. sha1加密 H5源码: <!DOCTYPE html> <html><hea ...

  7. 对称加密----AES和DES加密、解密

    目前主流的加密方式有:(对称加密)AES.DES        (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...

  8. ios php rsa加密解密,php rsa加密解密使用详解

    第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem 从上面看出通 ...

  9. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

  10. js怎么实现对html代码加密解密,javascript脚本加密解密及HTML转JS

    HTML & Javascript 相互转换 < body > HTML & Javascript 输入 & 输出 < br > < script ...

最新文章

  1. spcontent------spcollection.add(field)
  2. linux微信公众号报警,zabbix报警媒介,微信报警,邮件报警
  3. [html] 如何给table中的某一列设置固定宽度
  4. MUI 列表组件:文字居左中右(排版) - 代码篇
  5. 收藏 | 机器学习领域必知必会的12种概率分布(附Python代码实现)
  6. 关于IT测试中的一些问题。
  7. Oracle的DBV工具
  8. 查看计算机GUID的WMI类
  9. mysql用户画像表设计_用户画像:计算用户偏好标签及数据指标与表结构设计
  10. SQL Server 2008 R2 学习总结
  11. 全网最快的网络服务器是什么,最好用最快的首选 DNS 服务器地址设置 (电信/联通/移动)...
  12. 魔兽世界怀旧服服务器平衡状态,魔兽世界:怀旧服服务器最新“人口普查”,十大最平衡服务器推荐...
  13. 开源让这位 00 后逆袭成为各类大奖收割者
  14. 【信息系统项目管理师】干系人管理
  15. as_completed和wait源码分析
  16. 【教程】关于打开一些exe文件时,打开方式为microsoft store的解决办法
  17. 三大中值定理及简单例题
  18. 一文带你深入理解【Java基础】· 枚举类
  19. 常用 XSS Payload
  20. Mac苹果电脑上有哪些好用的txt小说阅读器?

热门文章

  1. 安装新版xampp后apache无法启动提示:Apache Service detected with wrong path解决方案
  2. Android Studio 安装说明
  3. 为用户设计良好的接口
  4. struts2要点总结
  5. SharePoint 2010-在ribbon上添加表单,将默认control加到自定义group中
  6. c++、C#互调用之c# 调用 vc6 COM
  7. mysql中locate和substring函数使用
  8. django-rest-framework-jwt的使用
  9. Java日志框架(二)
  10. 黑客伦理(hacker ethic)--《黑客与画家》