使用openssl的md5库
http://blog.csdn.net/sinat_35297665/article/details/78244523
在linux机器上,有一个命令可以计算出文件的md5值,那就是md5sum,如果没有的话,就需要安装RPM包:coreutils。
现在我们使用openssl的库也可以方便的计算出文件的md5值。主要用到的函数是
int MD5_Init(MD5_CTX *c);
int MD5_Update(MD5_CTX *c, const void *data, size_t len);
int MD5_Final(unsigned char *md, MD5_CTX *c);
使用库前,先需要安装openssl的RPM包。这三个函数不需要解释,看下面一个例子就知道:
- #include <openssl/md5.h>
- #include <iostream>
- #include <cstdio>
- #include <iomanip>
- #include <stdlib.h>
- using namespace std;
- int main()
- {
- FILE *fd=fopen("test","r");
- MD5_CTX c;
- unsigned char md5[17]={0};
- if(fd == NULL)
- {
- cout << "open failed" << endl;
- return -1;
- }
- int len;
- unsigned char *pData = (unsigned char*)malloc(1024*1024*1024);
- if(!pData)
- {
- cout << "malloc failed" << endl;
- return -1;
- }
- MD5_Init(&c);
- while( 0 != (len = fread(pData, 1, 1024*1024*1024, fd) ) )
- {
- MD5_Update(&c, pData, len);
- }
- MD5_Final(md5,&c);
- for(int i = 0; i < 16; i++)
- cout << hex << setw(2) << setfill('0') << (int)md5[i];
- cout << endl;
- fclose(fd);
- free(pData);
- return 0;
- }
编译链接选项为:
g++ test.cpp -o testmd5 -lcrypto -lssl
生成testmd5后,我们把一个300多M的test文件放到与testmd5一个目录。并把testmd5生成的结果和linux命令"md5sum test" 结果对比,会发现是一样的。如下图:
有兴趣可以参考openssl源码
使用openssl的md5库相关推荐
- OpenSSL源码库目录解析
OpenSSL目录名以及功能描述 目录名 功能描述 Crypto 存放OpenSSL所有加密算法源码文件和相关标注如X.509源码文件,是OpenSSL中最重要的目录,包含了OpenSSL密码算法库的 ...
- 【OpenSSL】OpenSSL之MD5
00. 目录 文章目录 00. 目录 01. MD5简介 02. 发展历史 03. MD5应用场景 04. OpenSSL中MD5 05. MD5测试代码 06. 附录 01. MD5简介 MD5信息 ...
- ios 编译ffmpeg 支持 x264 fdk-aac openssl 并裁剪库大小
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2018-10-11更新 android平台编译 右转 新的报错信息 ./lib ...
- 使用开源的openssl的md5头文件,实现对于文件的md5代码
需要安装openssl的库 sudo apt-get install openssl sudo apt-get install libssl-dev 参考链接 代码 #include "op ...
- C++安全方向(三)3.3 openssl的MD5接口调用演示
如下代码: 1064420127下载代码和学员交流*/#include <iostream> #include <openssl/md5.h> using namespace ...
- libcurl linux 静态链接库_Linux ubuntu OpenSSL + curl 静态库编译及使用
下载源码 源码编译 解压之后,进入源码目录openssl-1.1.0f,执行如下命令.因为只需要编译静态库,也没有特殊要求,所以使用的编译选项配置很简单: ./config -fPIC no-shar ...
- openssl java des_OPENSSL库的使用-DES篇
一.单DES算法ECB模式加解密 1.使用函数DES_set_key_unchecked设置密钥 2.使用函数DES_ecb_encrypt来进行数据加解密 void DES_ecb_encrypt( ...
- C语言 Openssl的md5使用方式
方式1 #include <openssl/md5.h> #include <stdio.h> #include <string.h> void md5hexToS ...
- python2 md5库_python版本坑:md5例子(python2与python3中md5区别)
起步 对于一些字符,python2和python3的md5加密出来是不一样的. # python2.7 pwd = "xxx" + chr(163) + "fj" ...
最新文章
- BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )
- web项目html页面过多,详解webpack4多入口、多页面项目构建案例
- DB2数据库V8.2版本远程连接方法
- flutter开发之必须掌握的dart知识点:list,set,map
- hdfs的特性、命令、安全模式、基准测试
- 使用Python发送电子邮件
- oracle 强制 断开,ORA-01092: ORACLE 例程终止。强行断开连接
- Visual Studio Code 1.43 发布
- JavaScriptCore框架在iOS7中的对象交互和管理
- C++ string类常用函数
- 软件一定要联网安装,只有内网就干瞪眼
- 一个简单的python小游戏
- Unity3D 广播星历与精密星历
- 想要糖尿病逆转,健康饮食必不可少
- 【测绘程序设计】Excel度分秒(° ‘ “)转换度(°)模板附代码超实用版
- SwiftUI 人工智能教程之图像识别植物或花朵通过图片和相机
- top和margin-top等的区别
- python loop call soon_python中call方法怎么使用?
- 妻子决定你未来事业的高度,男的看一看,女的学一学
- python控制画笔尺寸_python教程系列终章:画笔控制
热门文章
- vs 2012,vs 2013问题系列
- Eclipse for android 中设置java和xml代码提示功能(转)
- mvc的Controller返回值类型ActionResult详解
- 用GDB Server进行远程调试
- android 系统挂载ext4格式U盘,macOS 系统下格式化 U 盘为 ext4 格式
- python多大孩子可以学_孩子学编程最佳年龄是多大
- 计算机扬天m400c联想,【联想扬天M参数】联想扬天M系列台式电脑参数-ZOL中关村在线...
- MongoDB 数组类型查询 —— $elemMatch 操作符
- linux c实现mypwd
- gp的分布、分区策略(概述)