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算法对文件哈希值实时监测相关推荐

  1. 基于LZ77算法的文件解压缩项目缺陷分析

    基于Huffman算法和LZ77算法的文件压缩(七) 基于Huffman算法和LZ77算法的文件压缩(六)已经讲解完文件压缩的过程,本文讲解文件解压缩的过程和大文件处理方式 一.解压缩的流程 LZ77 ...

  2. 基于LZ77算法的文件压缩铺垫

    基于Huffman算法和LZ77算法的文件压缩(四) 本文开始讲解LZ77算法,会用到哈希,哈希原理详解 我们在基于Huffman算法和LZ77算法的文件压缩(一)当中总体介绍了Huffman算法和L ...

  3. c语言压缩并加密算法,C语言压缩文件和用MD5算法校验文件完整性的实例教程

    使用lzma SDK对7z文件简单解压缩有时候我们只需要单纯对lzma算法压缩的7z文件进行解压,有时需要在嵌入式设备上解压,使用p7zip虽然支持多种格式,但是不容易裁剪,使用lzma SDK是首选 ...

  4. 基于lbp算法的特征提取 表情识别和疲劳监测系统 matlab

    基于lbp算法的特征提取 表情识别和疲劳监测系统 matlab 情图片进行LPB+LPQ特征提取,最后放入支持向量机中分类训练,统计出训练和测试的精度 function varargout = uns ...

  5. 基于LZ77算法的文件压缩收尾

    基于Huffman算法和LZ77算法的文件压缩(六) 前面基于Huffman算法和LZ77算法的文件压缩(四) 基于Huffman算法和LZ77算法的文件压缩(五) 已经充分讲解LZ77到基本原理和实 ...

  6. 基于LZ77算法的文件压缩

    基于Huffman算法和LZ77算法的文件压缩(五) 基于Huffman算法和LZ77算法的文件压缩(四)已经讲解LZ77算法到基本原理和压缩过程. 本文详细讲解文件压缩过程当中的问题 一.文件压缩的 ...

  7. 基于Huffman算法的文件解压缩

    基于Huffman算法和LZ77算法的文件压缩(三) 基于Huffman算法和LZ77算法的文件压缩(一)和 基于Huffman算法和LZ77算法的文件压缩(二)讲解Huffman压缩的基本原理和文件 ...

  8. 基于Huffman算法实现文件压缩解压缩(C语言)

    一.实现步骤 统计源文件中字符种类和频率 建立Huffman编码树 生成Huffman编码表 压缩文件时,字符匹配编码,将编码写入压缩后文件 解压缩文件时,读取编码,匹配编码表中的字符,写入解压缩后的 ...

  9. Java基于SM4算法实现文件加密 SM4FileUtils

    SM4Utils 相关连接:https://blog.csdn.net/Jimmy12581/article/details/106468148 public class SM4FileUtils { ...

最新文章

  1. 集成学习模型(xgboost、lightgbm、catboost)进行回归预测构建实战:异常数据处理、缺失值处理、数据重采样resample、独热编码、预测特征检查、特征可视化、预测结构可视化、模型
  2. C++指针与内存泄露
  3. 【python图像处理】python绘制极坐标图
  4. MySQL优化排名语句
  5. Linux 进程通信fifo,Linux 进程通信之FIFO的实现
  6. mysql gtid配置_mysql 5.7 GTID主从配置
  7. python编译2的n次方计算器_用PYTHON2做个计算器,哪位高手能用Python写出计算器的代码,需要加减乘除和退出,谢谢!...
  8. 超链接为什么在HTML的head可以运行,悬赏问答 - HTML开发中,为什么最好把CSS的link标签放在head/head之间??...
  9. L2TP的LAC自动拨号实验
  10. matlab计算并联电阻怎么输入,如何用计算器快速计算并联电阻,并联电阻的计算方法...
  11. 宝塔面板安装云锁启用拦截功能全流程操作
  12. 机器学习-胯下运球之Naive Bayes<朴素贝叶斯法>
  13. Python抓取网易云音乐热搜榜热评
  14. Qt 学习之路 2(15):标准对话框 QMessageBox
  15. 3030. 天黑请闭眼
  16. 赋能IT,创新价值——互联网时代企业IT转型实践
  17. 尚硅谷_2019互联网大厂高频重点面试题(第二季)思维导图脑图笔记完整版
  18. ubuntu16.04更新系统后桌面出错的解决办法
  19. 软件研发之道:微软开发团队的经验法则
  20. rk3288之CPU定频实现(手动、内核)

热门文章

  1. 万花尺matlab仿真(圆内旋轮线,异形齿轮)
  2. 用计算机语言编写花瓣雨,花瓣雨【石家庄计算机学院吧】_百度贴吧
  3. VSCode+Marp:用Markdown做幻灯片(进阶篇)-宋森安
  4. 里恩临床试验电子数据采集系统(EDC)介绍
  5. java基础之异常_繁星漫天_新浪博客
  6. 权力的游戏刷声望辅助【多开辅助】权力的游戏手游辅助挂机刷石油资源采集脚本
  7. pat 乙级 1015. 德才论(25)
  8. 剑网3选择人物后进入游戏就显示服务器断开连接,剑网3怎么进入游戏_剑网3进入游戏的问题_牛游戏网...
  9. 《异类》这本书到底有多异类?
  10. 细粒度识别 | 百度细粒度识别方案