MD5加密算法源码下载:https://pan.baidu.com/s/1nwyN0xV

下载完成了之后解压,得到两个文件

环境搭建:

1、把md5.h文件拷贝到/usr/include/目录下

sudo cp md5.h /usr/include

2、编译生成.o文件

 gcc -fPIC -o md5.o -c md5.c -lpthread -ldl

3、编译生成.so文件

gcc -shared -fPIC -o libmd5.so md5.o -lpthread -ldl

4、把生成的.so文件拷贝都/lib/目录下,方便使用

sudo cp libmd5.so /lib/

其中我们使用到了MD5中数据加密函数

void MD5Str(char *input, unsigned char *output);
参数: input:要加密的数据
output:加密后的数据

程序mysqlite3.c如下:

 #include <sqlite3.h>
#include <stdio.h>
#include <string.h>
#include "md5.h" /*定义此宏时使用回调函数查询否则只是用非回调函数查询*/
//#define CALLBACK /*定义创建表格指令IF not EXISTS:不存在,AUTOINCREMENT:自动增加主键,not NULL:不能为空*/
#define CREATE "create table IF not EXISTS passwd(id integer primary key AUTOINCREMENT,username text not NULL,password text not NULL)"
/*定义查询数据指令*/
#define SELECT "select * from passwd where username='%s' and password='%s'"
/*定义插入数据指令*/
#define INSERT "insert into passwd(username,password) values('%s','%s')" /*如果查询到多行数据, 那么这个函数就会调用多次(每一行调用一次)*/
int callback(void *arg, int col, char **value, char **name)
{
int i=;
for(i=;i<col; i++)
{
printf("%s\t", value[i]);
}
printf("\n");
return ;
} int main(void)
{ //1.打开数据库
sqlite3 *ppdb = NULL;
int ret = sqlite3_open("./passwd", &ppdb); /*我们之前要先创建一个名字叫passwd的数据库*/
if(ret != SQLITE_OK)
{
perror("open fail");
return -;
}
sqlite3_exec(ppdb,CREATE,NULL,NULL,NULL); /*创建一个表格*/
char temp[];
char temp1[];
char insert[strlen(temp)+strlen(temp1)+]; /*这里的数组要给大一点,因为等下加密的时候会得到一串很长的数据*/
printf("please input your username:");
scanf("%s",temp);
printf("please input your password:");
scanf("%s",temp1);
MD5Str(temp1,temp1);/*把输入的密码使用md5加密存储在数据库表格中*/
printf("1111\n"); sprintf(insert,INSERT,temp,temp1);/*打包数据,准备插入到表格中*/ sqlite3_exec(ppdb,insert,NULL,NULL,NULL); char username[];
char password[];
printf("input username:");
scanf("%s",username);
printf("input password:");
scanf("%s",password); MD5Str(password,password);/*把输入的密码使用md5加密之后与数据库表格中的密码匹对*/
char sql[strlen(SELECT)+strlen(username)+strlen(password)]; /*打包一个字符串,将SELECT字符串放到sql中,username和password这两个变量放大SELECT中*/
sprintf(sql,SELECT,username,password); #ifdef CALLBACK
//回调查询
char *selectsql = "select * from myname";
ret = sqlite3_exec(ppdb, selectsql, callback, NULL, NULL);
if(ret != SQLITE_OK)
{
perror("create fail");
sqlite3_close(ppdb);
return -;
} //非回调查询
#else
char **result = NULL;
int row = ;
int col = ;
char *error = NULL;
ret = sqlite3_get_table(ppdb,sql,&result,&row,&col,&error);
if(ret != SQLITE_OK)
{
perror("get table fail");
return -;
} int i=, j=;
for(i=;i<row+;i++)
{
for(j=;j<col;j++)
{
printf("%s\t",result[j+i*col]);
}
printf("\n");
} if(row > ) /*数据匹配成功*/
printf("checked OK\n");
else /*数据匹配失败*/
printf("fail\n");
sqlite3_free_table(result);//释放结果
#endif sqlite3_close(ppdb);
return ;
}

我们先要创建一个名字叫passwd数据库,如果不懂创建可以看看我的这篇文章:linux数据库环境搭建

sqlite3 passwd

接着我们编译程序

gcc -o mysqlite3 mysqlite3.c -lsqlite3 -lmd5

 

运行结果如下:

linux数据库中使用MD5加密的更多相关文章

  1. 简单讲解iOS应用开发中的MD5加密的相关使用<转>

    这篇文章主要介绍了iOS应用开发中的MD5加密的相关使用,示例代码基于传统的Objective-C,需要的朋友可以参考下 一.简单说明 1.说明 在开发应用的时候,数据的安全性至关重要,而仅仅用POS ...

  2. 简单讲解iOS应用开发中的MD5加密的相关使用

      简单讲解iOS应用开发中的MD5加密的相关使用   作者:文顶顶 字体:[增加 减小] 类型:转载 时间:2015-12-19 我要评论 这篇文章主要介绍了iOS应用开发中的MD5加密的相关使用, ...

  3. java中使用MD5加密的算法

    MD5,全名Message Digest Algorithm 5,中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.以下是JAVA语言中使用MD5加密的工具 ...

  4. Jmeter 请求参数中包含 MD5 加密的密码

    如何在jmeter中对参数进行加密 使用工具:java+myeclipse 让开发将他的加密类从eclipse中导出来打成jar包,放在jmeter安装文件夹lib文件夹中%JMETER HOME%\ ...

  5. ASP.NET中的MD5加密

    新人冒泡,打今起在园子里算是开博了,先来写点关于基础性的东西 为以后的写其他的文章做准备. 今天就先来说说MD5加密与在ASP.NET中如何实现MD5加密. MD5加密简单的说就是把一段明文 通过某种 ...

  6. [转]SQL Server 数据库中的 MD5 和 SHA1

    MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果 ...

  7. JS中使用MD5加密

    下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...

  8. java中使用MD5加密技术

    在项目中经常会对一些信息进行加密,现在常用的信息加密技术有:MD5.RSA.DES等,今天主要说一下,md5加密,以及如何在java代码根据自己的业务需求使用md5. MD5简介: MD5即Messa ...

  9. Winform中进行MD5加密

    Winform,c#进行MD5加密直接上步骤: 1.添加引用 2.在.NET选项卡中找到“System.Web” 3.选中之后,点击“确定”即可,此时会在解决方案中看到刚才添加的引用 4.引用名空间: ...

随机推荐

  1. 在Azure DevOps Server (TFS)的流水线中编译和测试Xcode移动应用(iPhone)

    概述 Xcode是开发基于苹果macOS系统的桌面应用和移动应用的主要IDE工具.使用Azure DevOps Server (原名TFS)系统中的pipelines流水线功能,可以方便的集成Xcod ...

  2. 文件安全复制之 FastCopy

    FastCopy是Windows平台上最快的文件拷贝.删除软件.由于其功能强劲,性能优越,一时间便超越相同类型的所有其他软件.由于该软件十分小巧,你甚至可以在安装后,直接将安装目录中的文件复制到任何可 ...

  3. 软件 ---- intelij IDEA安装

    官网下载, 下载地址: https://www.jetbrains.com/idea/download/#section=windows 版本说明:Ultimate 为旗舰版,功能全面,按年收费,这个 ...

  4. IDEA设置外部比对工具Beyond Compare

    设置IDEA使用外部的比对工具,比如Beyond Compare,其实很简单,但是可能好几年才会设置一次,比如换工作的时候,所以记录下来 可以通过菜单File-Settings 或者直接快捷键ctrl ...

  5. 基于Spark的电影推荐系统(推荐系统~7)

    基于Spark的电影推荐系统(推荐系统~7) 22/100 发布文章 liuge36 第四部分-推荐系统-实时推荐 本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影. ...

  6. 整理:VS常用快捷键

    F1-F12 F1 帮助 F3: 查找下一个 Shift+F3: 查找上一个 F5: 启动调试 Ctrl+F5: 开始执行(不调试) Shift+F5: 停止调试 Ctrl+Shift+F5: 重启调 ...

  7. Python collectioins

    collections是一个python的内建模块,提供了一些除了dict.list.tuble.等常见的数据类型之外的一些集合类 参考链接:https://www.liaoxuefeng.com/w ...

  8. 小鸟初学Shell编程(二)编写简单的Shell脚本

    Shell脚本 编写Python.PHP脚本通常需要掌握语言的函数,那么Shell脚本则不需要,只需要掌握Linux命令就可以编写Shell脚本,因为Shell脚本就是由多个Linux命令组成,通过将 ...

  9. 快速上手Mac效率神器Alfred以及Alfred常用操作

    前言 Alfred,想必大家就算没用过也耳闻过.Alfred是一个让你可以丢掉鼠标的神器.很多读者可能之前认为Alfred的学习成本高,或者感觉它太复杂,而望之却步.其实Alfred并非高不可攀,本文 ...

  10. vue中嵌套的iframe中控制路由的跳转及传参

    在iframe引入的页面中,通过事件触发的方式进行传递参数,其中data是一个标识符的作用,在main.js中通过data进行判断,params是要传递的参数 //iframe向vue传递跳转路由的参 ...