MD5校验判断文件是否一样

MD5校验并不陌生,它常常被用于文件的一致性校验,在各大下载站都可以看到它的身影。

MD5校验(checksum)是通过对接收的传输数据执行散列运算来检查数据的正确性。

MD5可以为任何文件产生一个同样独一无二的“数字指纹”,如果对文件做了任何改动,哪怕仅仅修改了1字节,其MD5值都会发生变化。正是因此,利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。

MD5校验原理

  • 一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度的值的单向操作。任意两个字符串不应有相同的散列值(即,有“很大可能”是不一样的,并且要人为地创造出来两个散列值相同的字符串应该是困难的)。

  • 一个 MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。计算出的散列值拿来和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被窜改过(前提是散列值没有被窜改),从而可以放心使用。

MD5校验可以应用多个领域,比如说机密资料的检验,下载文件的检验,明文密码的加密等。

MD5校验原理举例

如客户往我们数据中心同步一个文件,该文件使用MD5校验,那么客户在发送文件的同时会再发一个存有校验码的文件,我们拿到该文件后做MD5运算,得到的计算结果与客户发送的校验码相比较,如果一致则认为客户发送的文件没有出错,否则认为文件出错需要重新发送。

有没有两个完全不一样的文件,但是他们的md5值是一样的?

首先答案是肯定的。

因为MD5校验值的长度是固定的128Bit,其总共有2的128次方种不同的值;而被MD5校验的文件长度却是任意的:可以是1Bit、1KB甚至1GB,也就是说可以有正无穷个不同的文件。用这有限的2的128次方种不同的值去匹配正无穷个文件,结果是必然有重复的。

数据有意义的话就比较难找碰撞,数据没有意义的话按照上述的理论,碰撞的概率会比较大。

因此,md5保证给定一个文件f1,找到一个不同的文件f2使其md5与f1的相同是相对困难的,这就保证了md5可以用被用于比如判断文件完整性。

MD5校验判断文件是否一样相关推荐

  1. linux 目录md5校验,【我的Linux,我做主!】浅谈MD5校验文件完整一致性

    目录: (一)MD5介绍 (二)md5sum命令 (三)实战演练 (一)MD5介绍 (1.1)MD5即Message-Digest Algorithm 5(信息-摘要算法 第5版),用于确保信息传输完 ...

  2. STM32F103通过Ymodem协议更新程序带MD5校验

    一.先来几张靓图 二.Xshell软件设置 三.程序更新流程 waitStartVerInfo, //等待起始校验消息,确定协议 getProgInfoPack, //或去信息包 progFileDe ...

  3. ET199加密方案——文件MD5校验

    ET199(http://www.jansh.com.cn/product/detail.php?cid=13)采用安全强度最高的智能卡芯片,硬件不能被复制,多重安全级别,并且集成了16位CPU,8K ...

  4. python tcp黏包和struct模块解决方法,大文件传输方法及MD5校验

    https://www.cnblogs.com/zaizai1573/p/10230973.html 一.TCP协议 粘包现象 和解决方案 黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令 ...

  5. Linux中文件MD5校验

    md5sum命令用于生成文件的md5数字摘要,并可以验证文件内容是否发生了改变,间接地还可以检验两个文件内容是否完全相同.因为md5sum是读取文件内容来计算校验码的,因此只能验证文件内容,而无法验证 ...

  6. 生成文件md5校验码可满足大于2G情况

    对于文件生成md5校验码,在实际开发中用处很大,有利于比较服务器上是否已经存在该文件,哪怕文件名不一致也无所谓. 由于存在超大文件,经过从网上查找,得到两种方法,一种是利用MappedByteBuff ...

  7. java 文件md5校验_Java 获取 文件md5校验码

    讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...

  8. MD5介绍及Windows下对文件做md5校验。

    MD5介绍参考百度百科: 摘要如下: MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性. 一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度 ...

  9. 文件CRC和MD5校验

    文件CRC和MD5校验 CRC和MD5用于文件和数据的传输校验,以确认是否接收成功. unit CRCMD5;interface { 获取文件CRC校验码 } function GetFileCRC( ...

  10. Python实现文件md5校验

    Linux下校验文件MD5值,最简单的方法就是执行md5sum命令 md5sum filename 原本打算用subprocess调用系统命令来获取md5值, [python] view plainc ...

最新文章

  1. DLL load failed: 页面文件太小,无法完成操作
  2. Oracle OS Block Header
  3. cassandra集群搭建
  4. SpringBoot 上传限制
  5. seo vue 动态路由_基于vue.jsvue-router的动态更新TDK(SEO优化)
  6. ActiveRecord模式整理
  7. rust投递箱连接箱子_一种用于防盗的牛奶投递箱的制作方法
  8. @程序员,区块链开发平台避坑指南!
  9. zend studio php插件,Zend Studio使用技巧两则 zend studio安装 zend studio 插件 zend studio 中文...
  10. 小米Android版本不不一致,小米5s卡刷包android版本不一致怎么解决
  11. 自动驾驶 4-5 自行车模型的横向动力学 Lateral Dynamics of Bicycle Model
  12. 二阶魔方入门玩法教程
  13. adc0808模数转换实验报告_模数转换实验报告
  14. 米斯特白帽培训讲义(v2)漏洞篇 弱口令、爆破、遍历
  15. 最新中文linux系统,veket linux系统下载
  16. 手持式频谱分析仪 TFN的715c和760c怎么样
  17. “微信之父”张小龙:我没去过龙泉寺!
  18. 【不定时推荐】这些年读过的书第一本--《一个人的朝圣》
  19. linux查看磁盘使用情况(一)
  20. 念数字 字符串操作系列2

热门文章

  1. 《董明珠的真面目,她到底有多狠》调查问卷
  2. Python爬虫技术及PyQt5界面编程实现12306火车票查询
  3. 计算机网络专业就业压力,网络工程专业就业形势研究
  4. 宇宙简史|生物学家也要了解的物理
  5. 【原创TVT技术解析】“双击Q盘”“Q盘红色图标消失”问题
  6. Laravel 留言评论功能
  7. 英语老师超强整理:18条小学英语语法快速记忆口诀,英语成绩次次100!
  8. 英特尔400系列服务器芯片组,驱动支持列表再立功 Intel 400系列芯片组曝光
  9. 李佳琦如果直播卖保险,你敢不敢买?
  10. VS2010 C++单元测试之gtest与OpenCppCoverage实践