【技术篇】文件的md5值
前言:
我们以一个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值相关推荐
- shell 获取字符串/文件的MD5值
获取字符串的MD5值: 字符串"hello"的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2 ...
- JAVA 获取文件的MD5值大小以及常见的工具类
1 /** 2 * 获取文件的MD5值大小 3 * 4 * @param file 5 * 文件对象 6 * @return 7 */ 8 public static String getMD5(Fi ...
- java 获取md5值报错_java获取文件的MD5值
package com.sichang.util; import java.io.File; import java.io.FileInputStream; import java.math.BigI ...
- python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值
#!/usr/bin/env python #_*_encoding:utf-8 # 2018/05/29 #augustyang #2.0 ''' 解压文件,合并文件 打包成zip格式文件 生成MD ...
- c++判断文件是否被修改(获取文件的MD5值)
需求分析 因为项目中需要检测一个文件是否被篡改,我采用了监测文件的MD5值. MD5,简单地来说,就是文件的"指纹".如果原始文件被修改了,那么MD5值也就会跟着发生变化,所以我们 ...
- Spring Boot——获取上传文件的MD5值解决方案
解决方案 方法一: /*** 上传文件* @param file 文件* @return ResponseBean*/@ApiOperation(value = "上传文件",no ...
- linux比较两个文件md5,linux下如何批量比对两个文件的MD5值是否一致,SHA1是否一致。...
linux下如何批量比对两个文件的MD5值是否一致,SHA1是否一致.如下所示: #!/bin/bash SOURCE_DIR="/home/walkerjava/source/" ...
- c语言md5函数 linux,Linux下C语言计算文件的md5值(长度32)
google了好久都没有找到合适的,其实我只需要一个函数,能计算文件的 md5 值就好, 后来找到了 md5.h 和 md5.c 的源文件,仿照别人的封装了个函数(他那个有问题,和 md5sum 计算 ...
- 如何利用openSsl来计算一个文件的md5值?
openssl环境的配置, 我就不再说了.在本文中, 我们来讨论一个文件的md5值, 废话少说, 直接给大家代码, 上点干货: [cpp] view plaincopy #include <io ...
最新文章
- java 解析csv_java解析CSV文件(getCsvData 解析CSV文件 zipFiles 打成压缩包 exportObeEventDataExcel 前端页面响应)...
- 短视频的生成,不要在技术上想当然
- tensorflow 1.0 学习:参数和特征的提取
- Teradata天睿公司任命Steve McMillan为总裁兼首席执行官
- xshell 软件的窗口一直是置顶 调整为不置顶
- chrome disable-web-security 关闭安全策略 解决跨域
- MT7628学习笔记(4)——固件烧录(TFTP方式)
- RunningCheese Firefox 71.0 正式版 [1225]
- 对音频压缩概念的一些误解--记一次与音视频压缩专家的对话
- S7–1500遇上工业无线AP:一个立体仓库无线网络故障诊断分析案例
- SNIP算法详解(极端尺寸目标检测)
- 微信jssdk常见错误及解决方法
- PDF编辑器哪个好,如何把PDF文件拆分成多个文件
- 斐波那契数列+pyton
- 上了一堂健身课,27岁程序员尿尿像酱油!
- web前端进阶<7>:3d图像翻转效果
- 游戏开发团队及工作流程
- 用户体验设计师面试中可能会问及的10个高频问题
- 计算机中int函数什么意思,excel中int是什么意思
- GSoC 2022 Blender VSE: 第二、三周总结