单向散列函数概述并基于MD5算法对文件哈希值实时监测
1、如何验证文件是否被修改过
- 只生成一个指纹文件,对指纹文件进行验证
- 当已经存储的文件被修改之后,指纹文件就会跟着变化,即生成一个单向散列函数
- 任意长度的数据都对应固定长度的散列值–减少匹配开销
- 散列值可以随着消息的变化发生改变–方便进行验证修改
- 散列值单项不可逆,可抗碰撞
2、单向hash抗碰撞
(1)所有的函数都要满足弱抗碰撞
给定X和hash值的情况下,不能找到另外一个数与前面hash值相同
(2)强抗碰撞(是可以暴力破解的)
在攻击时,可以设计两个散列值相同的字符串,就可以替换原来的文件信息(MD5、SHA-1 已经被攻破)
3、基于MD5算法检测文件hash值
string GetFileListHash(string filepath) //拿到文件列表哈希值,哈希值都是二进制,字符串String可以用来存储哈希值
{string hash;//以二进制方式打开文件ifstream ifs(filepath, ios::binary);//binary以二进制的方式打开,ifstream是C++文件流的访问方式if (!ifs)return hash;//一次读取多少字节的文件int block_size = 128;//定义一块的哈希值长度,然后将所有哈希值块拼起来获得哈希值//文件读取bufunsigned char buf[1024] = { 0 };//hash输出unsigned char out[1024] = { 0 };while (!ifs.eof())//eof()是都到结尾的意思{ifs.read((char*)buf, block_size);int read_size = ifs.gcount();// 拿到读取的大小数量if (read_size <= 0)break;MD5(buf, read_size, out);//简化接口hash.insert(hash.end(), out, out + 16);//hash.end()是插入的位置(结尾处),out是插入的内容,out+16是结束指针,生成了大串哈希}//一个哈希是十六字节ifs.close();MD5((unsigned char*)hash.data(), hash.size(), out);return string(out,out+16);
}
4、程序结果
文件未被修改时:
文件被修改时:
单向散列函数概述并基于MD5算法对文件哈希值实时监测相关推荐
- 基于LZ77算法的文件解压缩项目缺陷分析
基于Huffman算法和LZ77算法的文件压缩(七) 基于Huffman算法和LZ77算法的文件压缩(六)已经讲解完文件压缩的过程,本文讲解文件解压缩的过程和大文件处理方式 一.解压缩的流程 LZ77 ...
- 基于LZ77算法的文件压缩铺垫
基于Huffman算法和LZ77算法的文件压缩(四) 本文开始讲解LZ77算法,会用到哈希,哈希原理详解 我们在基于Huffman算法和LZ77算法的文件压缩(一)当中总体介绍了Huffman算法和L ...
- c语言压缩并加密算法,C语言压缩文件和用MD5算法校验文件完整性的实例教程
使用lzma SDK对7z文件简单解压缩有时候我们只需要单纯对lzma算法压缩的7z文件进行解压,有时需要在嵌入式设备上解压,使用p7zip虽然支持多种格式,但是不容易裁剪,使用lzma SDK是首选 ...
- 基于lbp算法的特征提取 表情识别和疲劳监测系统 matlab
基于lbp算法的特征提取 表情识别和疲劳监测系统 matlab 情图片进行LPB+LPQ特征提取,最后放入支持向量机中分类训练,统计出训练和测试的精度 function varargout = uns ...
- 基于LZ77算法的文件压缩收尾
基于Huffman算法和LZ77算法的文件压缩(六) 前面基于Huffman算法和LZ77算法的文件压缩(四) 基于Huffman算法和LZ77算法的文件压缩(五) 已经充分讲解LZ77到基本原理和实 ...
- 基于LZ77算法的文件压缩
基于Huffman算法和LZ77算法的文件压缩(五) 基于Huffman算法和LZ77算法的文件压缩(四)已经讲解LZ77算法到基本原理和压缩过程. 本文详细讲解文件压缩过程当中的问题 一.文件压缩的 ...
- 基于Huffman算法的文件解压缩
基于Huffman算法和LZ77算法的文件压缩(三) 基于Huffman算法和LZ77算法的文件压缩(一)和 基于Huffman算法和LZ77算法的文件压缩(二)讲解Huffman压缩的基本原理和文件 ...
- 基于Huffman算法实现文件压缩解压缩(C语言)
一.实现步骤 统计源文件中字符种类和频率 建立Huffman编码树 生成Huffman编码表 压缩文件时,字符匹配编码,将编码写入压缩后文件 解压缩文件时,读取编码,匹配编码表中的字符,写入解压缩后的 ...
- Java基于SM4算法实现文件加密 SM4FileUtils
SM4Utils 相关连接:https://blog.csdn.net/Jimmy12581/article/details/106468148 public class SM4FileUtils { ...
最新文章
- 集成学习模型(xgboost、lightgbm、catboost)进行回归预测构建实战:异常数据处理、缺失值处理、数据重采样resample、独热编码、预测特征检查、特征可视化、预测结构可视化、模型
- C++指针与内存泄露
- 【python图像处理】python绘制极坐标图
- MySQL优化排名语句
- Linux 进程通信fifo,Linux 进程通信之FIFO的实现
- mysql gtid配置_mysql 5.7 GTID主从配置
- python编译2的n次方计算器_用PYTHON2做个计算器,哪位高手能用Python写出计算器的代码,需要加减乘除和退出,谢谢!...
- 超链接为什么在HTML的head可以运行,悬赏问答 - HTML开发中,为什么最好把CSS的link标签放在head/head之间??...
- L2TP的LAC自动拨号实验
- matlab计算并联电阻怎么输入,如何用计算器快速计算并联电阻,并联电阻的计算方法...
- 宝塔面板安装云锁启用拦截功能全流程操作
- 机器学习-胯下运球之Naive Bayes<朴素贝叶斯法>
- Python抓取网易云音乐热搜榜热评
- Qt 学习之路 2(15):标准对话框 QMessageBox
- 3030. 天黑请闭眼
- 赋能IT,创新价值——互联网时代企业IT转型实践
- 尚硅谷_2019互联网大厂高频重点面试题(第二季)思维导图脑图笔记完整版
- ubuntu16.04更新系统后桌面出错的解决办法
- 软件研发之道:微软开发团队的经验法则
- rk3288之CPU定频实现(手动、内核)
热门文章
- 万花尺matlab仿真(圆内旋轮线,异形齿轮)
- 用计算机语言编写花瓣雨,花瓣雨【石家庄计算机学院吧】_百度贴吧
- VSCode+Marp:用Markdown做幻灯片(进阶篇)-宋森安
- 里恩临床试验电子数据采集系统(EDC)介绍
- java基础之异常_繁星漫天_新浪博客
- 权力的游戏刷声望辅助【多开辅助】权力的游戏手游辅助挂机刷石油资源采集脚本
- pat 乙级 1015. 德才论(25)
- 剑网3选择人物后进入游戏就显示服务器断开连接,剑网3怎么进入游戏_剑网3进入游戏的问题_牛游戏网...
- 《异类》这本书到底有多异类?
- 细粒度识别 | 百度细粒度识别方案