前言:

我们以一个wrold文档为例,新建一个xx.docx文件,然后在Linux下可以使用命令md5sum xx.docx计算md5值 -》835741aba850778a5b06bfd57f55c98c 。然后我在复制了一下这个文件,并将文件名改为yy.docx,然后重复上面的命令去计算这个新文件的md5值,然后得到的是相同的结果,文件的md5值是我在我们一个项目“文件传输”中用到的,一开始用这个只知道是用来判断两个文件的内容是否相同,用的是老师给的一个借口,项目写完已经很久了,这个文件的md5值是最近在面试的时候被面试官问到了,所以现在回过来看一看这个,其实这个是用来做加密的,我也不太了解,是在网上看的,关于机密什么的就先不说了,先来看看他是怎么在项目中用代码实现的把!

(一)函数介绍

//打开/usr/include/openssl/md5.h这个文件我们可以看到一些函数// 初始化 MD5 Contex, 成功返回1,失败返回0int MD5_Init(MD5_CTX *c);// 循环调用此函数,可以将不同的数据加在一起计算MD5,成功返回1,失败返回0int MD5_Update(MD5_CTX *c, const void *data, size_t len);// 输出MD5结果数据,成功返回1,失败返回0int MD5_Final(unsigned char *md, MD5_CTX *c);// MD5_Init,MD5_Update,MD5_Final三个函数的组合,直接计算出MD5的值unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);// 内部函数,不需要调用void MD5_Transform(MD5_CTX *c, const unsigned char *b);

(二)代码演示

#include <openssl/md5.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <iomanip>
using namespace std;int main()
{MD5_CTX ctx;unsigned char outmd[16];char buffer[1024];char filename[32];FILE* fp = NULL;int len = 0, i = 0;memset(outmd, 0, sizeof(outmd));memset(filename, 0, sizeof(filename));memset(buffer, 0, sizeof(buffer));cout << "please enter file name:";cin >> filename;if((fp = fopen(filename, "rb")) == NULL){cout << "file open error!"<< endl;return 0;}MD5_Init(&ctx);while((len = fread(buffer, 1, 1024, fp)) > 0 ){MD5_Update(&ctx, buffer, len);memset(buffer, 0, sizeof(buffer));}MD5_Final(outmd, &ctx);for(i = 0; i < 16; i++){printf("%02X", outmd[i]);}cout << endl;return 0;}

结果:

注:编译命令为g++ - o main main.cpp -lssl加上库名。

参考文章:https://blog.csdn.net/eunice_fan1207/article/details/86312754

【技术篇】文件的md5值相关推荐

  1. shell 获取字符串/文件的MD5值

    获取字符串的MD5值: 字符串"hello"的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2 ...

  2. JAVA 获取文件的MD5值大小以及常见的工具类

    1 /** 2 * 获取文件的MD5值大小 3 * 4 * @param file 5 * 文件对象 6 * @return 7 */ 8 public static String getMD5(Fi ...

  3. java 获取md5值报错_java获取文件的MD5值

    package com.sichang.util; import java.io.File; import java.io.FileInputStream; import java.math.BigI ...

  4. python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值

    #!/usr/bin/env python #_*_encoding:utf-8 # 2018/05/29 #augustyang #2.0 ''' 解压文件,合并文件 打包成zip格式文件 生成MD ...

  5. c++判断文件是否被修改(获取文件的MD5值)

    需求分析 因为项目中需要检测一个文件是否被篡改,我采用了监测文件的MD5值. MD5,简单地来说,就是文件的"指纹".如果原始文件被修改了,那么MD5值也就会跟着发生变化,所以我们 ...

  6. Spring Boot——获取上传文件的MD5值解决方案

    解决方案 方法一: /*** 上传文件* @param file 文件* @return ResponseBean*/@ApiOperation(value = "上传文件",no ...

  7. linux比较两个文件md5,linux下如何批量比对两个文件的MD5值是否一致,SHA1是否一致。...

    linux下如何批量比对两个文件的MD5值是否一致,SHA1是否一致.如下所示: #!/bin/bash SOURCE_DIR="/home/walkerjava/source/" ...

  8. c语言md5函数 linux,Linux下C语言计算文件的md5值(长度32)

    google了好久都没有找到合适的,其实我只需要一个函数,能计算文件的 md5 值就好, 后来找到了 md5.h 和 md5.c 的源文件,仿照别人的封装了个函数(他那个有问题,和 md5sum 计算 ...

  9. 如何利用openSsl来计算一个文件的md5值?

    openssl环境的配置, 我就不再说了.在本文中, 我们来讨论一个文件的md5值, 废话少说, 直接给大家代码, 上点干货: [cpp] view plaincopy #include <io ...

最新文章

  1. java 解析csv_java解析CSV文件(getCsvData 解析CSV文件 zipFiles 打成压缩包 exportObeEventDataExcel 前端页面响应)...
  2. 短视频的生成,不要在技术上想当然
  3. tensorflow 1.0 学习:参数和特征的提取
  4. Teradata天睿公司任命Steve McMillan为总裁兼首席执行官
  5. xshell 软件的窗口一直是置顶 调整为不置顶
  6. chrome disable-web-security 关闭安全策略 解决跨域
  7. MT7628学习笔记(4)——固件烧录(TFTP方式)
  8. RunningCheese Firefox 71.0 正式版 [1225]
  9. 对音频压缩概念的一些误解--记一次与音视频压缩专家的对话
  10. S7–1500遇上工业无线AP:一个立体仓库无线网络故障诊断分析案例
  11. SNIP算法详解(极端尺寸目标检测)
  12. 微信jssdk常见错误及解决方法
  13. PDF编辑器哪个好,如何把PDF文件拆分成多个文件
  14. 斐波那契数列+pyton
  15. 上了一堂健身课,27岁程序员尿尿像酱油!
  16. web前端进阶<7>:3d图像翻转效果
  17. 游戏开发团队及工作流程
  18. 用户体验设计师面试中可能会问及的10个高频问题
  19. 计算机中int函数什么意思,excel中int是什么意思
  20. GSoC 2022 Blender VSE: 第二、三周总结

热门文章

  1. c语言课程设计——影院管理系统
  2. php 框架效率测试,关于DoitPHP,ThinkPHP,Yii,CI,DooPHP等框架的性能对比测试
  3. 【IAP支付之三】苹果IAP安全支付与防范 receipt收据验证
  4. 笔记本键盘变机械硬盘
  5. html、css如何画实心圆
  6. Nginx介绍及配置 (一)
  7. CSS----div或者view的圆角和方角
  8. 软件工程导论张海蕃书籍pdf_《软件工程导论》张海蕃课后习题答案
  9. MapReduce之起源篇
  10. 加载的图片太多或太大如何优化