需要安装openssl的库

  • sudo apt-get install openssl
  • sudo apt-get install libssl-dev
  • 参考链接

代码

#include "openssl/md5.h"
#include <iostream>
#include <fstream>
#include <iomanip>//#define MAX_DATA_BUFF = 1024;
//#define MD5_LENGTH = 16
char* get_file_md5(const char * path){char *out = (char *)malloc(33); //输出std::ifstream file(path,std::ios::in|std::ios::binary);//打开文件unsigned char MD5_result[16];do {if(file.fail()){std::cout<<"open file failure!"<<std::endl;break;}MD5_CTX md5_ctx;MD5_Init(&md5_ctx);char data_Buff[1024];while (!file.eof()){file.read(data_Buff,1024);//读取文件int length = file.gcount();if (length){MD5_Update(&md5_ctx,data_Buff,length);//将当前文件加入并且更新MD5}}MD5_Final(MD5_result,&md5_ctx); //获取MD5for (int i = 0; i < 16; i++) {  //将md5以16进制输出snprintf(&(out[i*2]),16*2,"%02x",(unsigned int)MD5_result[i]);}}while (false);return out;
}

调用简单流程

    char *output = get_file_md5(original_backup_file.c_str());//original_backup_file为文件的名字std::cout << "md5:%s\n"<< output << std::endl;free(output);

测试MD5的简单用例

//    std::ostringstream sout;
//    sout << std::hex<<std::setfill('0');
//    for(long long c:md5){
//        sout << std::setw(2) << (long long )c;
//    }
//    char mdString[33];
//    for(int i = 0; i < 16; i++)
//        sprintf(&mdString[i*2], "%02x", (unsigned int)md5[i]);
//
//    std::cout << mdString << std::endl;

参考链接

  • OpenSSL - 文件和字符MD5加密实现
  • MD5验证文件完整性 C++
  • How to create a md5 hash of a string in C?

使用开源的openssl的md5头文件,实现对于文件的md5代码相关推荐

  1. ssl协议及开源实现openssl

    转载地址:https://blog.csdn.net/jinbusi_blog/article/details/76039206?locationNum=4&fps=1 ssl协议 SSL: ...

  2. C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:余天升 链接:http://www.zhihu.com/question/20630104/answer/15722407 ...

  3. Linux找头文件规则,linux 头文件、库文件查找顺序

    linux 头文件.库文件查找顺序 默认分类 2009-11-14 01:24:28 阅读126 评论0 字号:大中小 linux 头文件.库文件查找顺序 2009-11-03 12:36 Inclu ...

  4. 【转】头文件和库文件区别

    头文件提供声明,库文件提供定义/实现. C 代码的编译过程: 预处理(需要头文件) -> 编译 -> 汇编 -> 链接(需要库文件); 执行时可能还有动态链接过程. 编译的时候,只要 ...

  5. .h头文件 .lib动态链接库文件 .dll 动态链接库

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

  6. linux+C环境下动态管理头文件和库文件

    本文共分三个部分:首先给出了一个简单的Makefile的例子,然后分别详细阐述了头文件和库文件的相关知识 1.一个Makefile的例: -L是指定链接时搜索路径,比如-L./等: -l是指定具体的库 ...

  7. Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:) 原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631 ========== ...

  8. .h头文件 .lib库文件 .dll动态链接库文件关系

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

  9. linux 校验文件生成,在Linux中了解如何使用MD5校验和生成和验证文件

    校验和是用作在数据正确数字的总和,其可以稍后用于存储或传输期间检测数据中的错误的一个数字.MD5( 消息摘要5)的款项可以用作校验和,以验证文件或字符串在Linux的文件系统 . MD5校验和是128 ...

最新文章

  1. mysql setup choose_1.MySQL安装、启动、登录、重置密码、卸载
  2. 使用IBMMQ时的那些事
  3. My1stServlet
  4. 初级php工程师应该具备什么,一名合格的PHP工程师需要掌握的知识结构
  5. vue props 传值 触发事件方法
  6. 前端学习(2920):v-html和v-text
  7. 首尔最高旋转餐厅后厨一探究竟
  8. localStorage、cookie
  9. 85. php 绘图体系
  10. 项目组织结构以及模块规划
  11. RFC 5961翻译
  12. 转 Android设置全屏的方法
  13. java中class文件反编译_java中的.class文件反编译
  14. Arm中国“战火”升级:第三封声明再次否认CEO吴雄昂被董事会罢免
  15. 软件工程需求分析模板(简单)
  16. CUDA核函数share memory
  17. 安装postgreSQL出现configure:error:readline library not found解决方法及pg安装全过程
  18. 原 《老路用得上的商学课》76-80学习笔记
  19. 网络地址转换—NAT——总结
  20. 重装系统后小喇叭显示未安装音频输出设备

热门文章

  1. 手机连接投影机的步骤_家用投影仪如何安装 家用投影仪安装方法【步骤详解】...
  2. python钻石数据分析_数据分析该用什么工具?
  3. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python字典和集合)
  4. postgis创建空间数据库(pgadmin4)
  5. CSDN改版,找不到各种入口,链接放下面
  6. GitHub.com上的那些东西你都知道什么意思吗?
  7. Python如何创建相同值的数组/列表
  8. 【C++学习】对私有构造析构函数的思考:new一个类对象vs直接创建类对象
  9. 【BZOJ - 3993】星际战争(网络流最大流+二分)
  10. 【HDU - 5918 】Sequence I (数组(字符串)匹配问题,可选KMP)