五、MD5加密实例MD5加密步骤如下:
- 定义
MD5_CTX md5c; - 初始化
/********************************************************* 名 称: MD5Init()* 功 能: 初始化MD5结构体* 入口参数: context:要初始化的MD5结构体 * 出口参数: 无*********************************************************/MD5Init(MD5_CTX *context);- MD5值计算
/********************************************************** 名 称: MD5Update()* 功 能: 将要加密的信息传递给初始化过的MD5结构体,无返回值* 入口参数: context:初始化过了的MD5结构体 input:需要加密的信息,可以任意长度 inputLen:指定input的长度* 出口参数: 无*********************************************************/MD5Update(MD5_CTX *context,(unsigned char *)input,inputLen); - 输出转换
/********************************************************** 名 称: MD5Update()* 功 能: 将加密结果存储到,无返回值* 入口参数: context:初始化过了的MD5结构体 digest :加密过的结果* 出口参数: 无*********************************************************/MD5Final(MD5_CTX *context,unsigned char digest[16]);- 格式整理
实例1 字符串加密对字符串进行加密:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "md5.h" 4 #include <sys/types.h> 5 #include <sys/stat.h> 6 #include <fcntl.h> 7 #include <string.h> 8 9 void main( void ) 10 { 11 int read_len; 12 int i ; 13 char temp[8]={0}; 14 unsigned char digest[16]; //存放结果 15 char hexbuf[128]="12334567"; 16 unsigned char decrypt[16]={0}; 17 unsigned char decrypt32[64]={0}; 18 19 MD5_CTX md5c; 20 21 MD5Init(&md5c); //初始化 22 read_len = strlen(hexbuf); 23 MD5Update(&md5c,(unsigned char *)hexbuf,read_len); 24 25 MD5Final(&md5c,decrypt); 26 strcpy((char *)decrypt32,""); 27 28 for(i=0;i<16;i++) 29 { 30 sprintf(temp,"%02x",decrypt[i]); 31 strcat((char *)decrypt32,temp); 32 } 33 printf("md5:%sn",decrypt32); 34 35 return; 36 }执行结果如下:
文章插图
本例对字符串12334567进行加密,结果和在线加密结果一致 。
实例2 文件加密对文件进行加密
#include <stdio.h>#include <stdlib.h>#include "md5.h"#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <string.h>#define FORword_FW "123.c"int calc_md5(char*filename,char*dest){ int i; int filelen = 0; int read_len; char temp[8]={0}; char hexbuf[128]={0}; unsigned char decrypt[16]={0}; unsigned char decrypt32[64]={0}; MD5_CTX md5; char fw_path[128]; int fdf; fdf = open(filename,O_RDWR); if(fdf<0) { printf("%s not existn",FORWORD_FW); return -1; } MD5Init(&md5); while(1) { read_len = read(fdf, hexbuf,sizeof(hexbuf)); if (read_len <0) { close(fdf); return -1; } if(read_len==0) { break; } filelen += read_len; MD5Update(&md5,(unsigned char *)hexbuf,read_len); } MD5Final(&md5,decrypt); strcpy((char *)decrypt32,""); for(i=0;i<16;i++) { sprintf(temp,"%02x",decrypt[i]); strcat((char *)decrypt32,temp); } strcpy(dest,decrypt32); printf("md5:%s len=%dn",dest,filelen); close(fdf); return filelen;}int main(int argc, char *argv[]){ int ret; int filelen; char md5_str[64]={0}; char cmd[256]={0}; filelen = calc_md5(FORWORD_FW,md5_str); if(filelen<0) { printf("calc_md5 failn"); return -1; } return 0;}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Springboot +Mybatis实现多数据源配置,你会吗?
- 一篇一看就懂的Https的实现过程梳理
- 有几个国家实现了载人登月 哪些国家探测器登月成功了
- 三星2020年营收-三星到2020年实现销售额4000亿美元-
- Python 语言基础变量获得变量类型
- 如何运用Spring框架的@Async实现异步任务
- 人生至少有一个梦想?为实现梦想而努力
- 语言天赋说是谁提出的 语言天赋真的存在吗
- 超实用的tomcat启动脚本实现
- 热加载和热部署,没听过?看看 Tomcat 是怎么实现的
