造冰箱的大熊猫@cnblogs 2019/2/20

emmmm,在这里把文件完整性校验相关的信息汇总一下

1、什么是文件完整性校验

所谓文件完整性校验就是对文件“验明正身”。攻击者会将恶意代码添加到某个受大众欢迎的软件中,然后发布到网络上。当用户下载并使用这种被篡改过的软件时,计算机病毒或者木马程序就会悄然进入用户的计算机。检验文件的完整性,就是检查下载到的软件是否被篡改过。

2、基于散列函数的文件完整性校验

文件完整性校验的常用方法是使用基于“散列函数”的校验算法。软件开发者在发布软件(比如一个exe文件)前,使用某个校验算法计算出该exe文件的“特征值”,然后将这个特征值和exe文件一同发布到网络上。用户使用相同的校验算法计算下载到exe文件的特征值,并与软件开发者发布的特征值比较。如果两个特征值相同,则认为下载到的exe文件是正确的。如果两个特征值不同,则认为下载到exe文件是被篡改过的。

以Ubuntu操作系统为例,在Ubuntu的下载网页上,用户既能找到Ubuntu安装镜像的下载链接,也能够找到“MD5SUMS”、“SHA1SUMS”、“SHA256SUMS”字样的文件。这些文件就是使用MD5、SHA1、SHA256等校验算法获得的Ubuntu安装镜像特征值。

点击右键看大图

校验算法本质上是建立文件和特征值的映射关系,用长度较短的特征值表征长度较长的待校验文件。由于特征值和待校验文件长度不匹配,无法保证两者的映射关系是唯一的。比如,某个校验算法使用32bit整数作为特征值,同时我们有232+1个内容互不相同的文件,那么一定有两个文件的特征值是相同的。当两个文件的特征值相同时,我们只能认为“这两个文件内容相同的可能性非常高”。在散列函数的研究领域中,如果两个不同文件具有相同的特征值,则称这种情况为“发生碰撞”。显然,特征值的长度越短,发生碰撞的概率就越高。但无限增加特征值长度,又降低了校验的可用性。好的散列函数设计,就是要在特征值长度较短的前提下,尽可能地降低碰撞概率。散列函数属于数学/密码学的研究范畴,专业性很强,它的可靠性和安全性留给数学大牛们去思考,我们作为一般计算机用户,只需要掌握以下校验工具的使用方法。

2.1、方法1:在Windows下使用7-Zip工具

如果Windows计算机上安装了7-Zip,则

1)右键点击待校验的文件(或文件夹)。

2)在弹出的菜单中选择“CRC SHA”。

3)在子菜单中可以看到“CRC-32”、“CRC-64”、“SHA-1”、“SHA-256”和“*”五个不同选项。其中,前4项分别对应采用32位循环冗余校验(CRC)、64位CRC、SHA-1和SHA-25校验算法对被选中文件进行校验。第5项“*”,则输出被选中文件的CRC-32、CRC-64、SHA-1、SHA-256和BLAKE2sp五种校验结果以及该文件的基本信息(文件名、文件大小)。

点击右键看大图

2.2、方法2:在Windows 7下使用certutil命令

在Windows命令行下输入如下命令计算文件的校验值

certutil -hashfile FileName HashAlgorithm

其中,FileName为待校验文件名(路径)。HashAlgorithm为校验算法名,可能的取值为MD2, MD4, MD5, SHA1, SHA256, SHA512。certutil命令的详细使用方法,请参考微软官网。

Windows XP不支持此命令。

2.3、方法3:在Windows XP下使用FCIV工具微软提供了一个名为“File Checksum Integrity Verifier”(简称FCIV)的工具。该工具可在Windows 2000/XP/Server 2003上运行,计算某个文件或文件夹下所有文件的校验值(支持MD5和SHA1),并与之前记录的校验值进行比较。该工具的下载链接、安装和使用方法请参考微软官网页面。

2.3、方法4:在Windows XP下使用md5sums工具

本节内容2019.4.24补充

从pc-tools.net下载md5sums软件的压缩包,解压缩获得md5sums.exe,在命令行下执行

md5sums FileName

其中,FileName为待校验文件名(路径)。详细使用方法参见解压缩获得的md5sums.txt文件。

2.5、方法5:在Linux下使用xxxsum命令

在Linux命令行下输入如下命令计算文件的校验值

xxxsum FileName

其中,FileName为待校验文件名(路径)。xxxsum为校验算法命令,可能的取值为md5sum,sha1sum,sha256sum,sha512sum,crc32。

3、数字签名:下载文件的身份认证

文件完整性校验针对的是文件内容是否被篡改。如果黑客攻击软件开发者的网站,将网站服务器上的软件替换为被篡改过、含有恶意代码的软件,同时篡改了网站上发布的特征值,那该怎么办。用户如何检查文件来自合法用户(软件开发者)还是非法用户(黑客)呢。为解决这一问题,软件开发者通常采用数字签名的方式对发布内容(exe文件、特征值)进行身份标记,用户对下载文件中的数字签名进行验证,检查下载到的文件是否为软件开发者发布的。通常很少有人会对下载文件进行身份认证的情况并不常见。有关数字签名的问题,我们以后单独讨论。

完整性校验用到常见的算法_文件完整性校验相关推荐

  1. 完整性校验用到常见的算法_几种常见的校验算法

    素材来源:网络 编辑整理:strongerHuang UART有一个奇偶校验,CAN通信有CRC校验.Modbus.MAVlink.USB等通信协议也有校验信息. 在自定义数据存储时,有经验的工程师都 ...

  2. 常见排序算法_解释的算法-它们是什么以及常见的排序算法

    常见排序算法 In its most basic form, an algorithm is a set of detailed step-by-step instructions to comple ...

  3. Java常见GC算法_垃圾收集器及内存分配_G1垃圾收集器

    常见GC算法 引用计数法: 每个对象都有一个计数器, 对象被引用一次, 计数器+1, 当对象引用失败一次. 计数器-1, 当对象计数器等于0, 说明对象没有被应用, 就可GC 优: 运行过程中, 可随 ...

  4. java常见数据算法_冒泡排序

    常见的算法有非常多,今天我们就一起看看常见的算法之冒泡排序. 冒泡排序的主要核心思想就是: 比较相邻两个元素,如果前一个元素的值比后一个元素的值大,则进行交换,经过对每个元素的比较,最后将最大的元素设 ...

  5. 使用哈希算法进行文件一致性校验

    文件一致性校验原因: 为了确保你得到的文件是正确的版本,而没有被注入病毒和木马程序.例如我们经常在网上下载软件,而这些软件已经被注入了一些广告和病毒等,如果不进行文件与原始发布商的一致性校验的话,可能 ...

  6. java web中文件类型,java web项目文件上传中常见的mime类型/文件类型校验、验证/只允许特定类型的文件(基于Apache的tika)...

    java代码 final Tika tika = new Tika(); Set allowMimeTypeAll = ImmutableSet.of("image/pjpeg", ...

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

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

  8. moead算法流程步骤_数据聚类(一)常见聚类算法的基本原理[图解]

    文章整理了五种常见聚类算法的基本原理,通过简易图解的形式对算法原理进行形象化的描述,同时给出了算法的实现流程和数学表达.全文约4192字. 相关名词的英文翻译 监督学习Supervised Learn ...

  9. android studio插入数据表中没有_学Java能拿高薪吗 Java中常见排序算法有哪些

    学Java能拿高薪吗?Java中常见排序算法有哪些?作为老牌编程语言,Java拥有广阔的市场占有率,几乎90%以上的大中型互联网应用系统在服务端开发都会首选Java.为了加入到Java这一高薪行业,很 ...

  10. 希尔排序的详细过程_算法系列: 10大常见排序算法(4)希尔排序

    本课程是从少年编程网转载的课程,目标是向中学生详细介绍计算机比赛涉及的编程语言,数据结构和算法.编程学习最好使用计算机,请登陆 www.3dian14.org (免费注册,免费学习). 一句 希尔排序 ...

最新文章

  1. jdk jre jvm 关系
  2. matlab组织的培训讲义,matlab培训讲义.doc
  3. ARM7寄存器分布图
  4. Go语言11-日志系统客户端相关组件
  5. codeforces 385C Bear and Prime Numbers
  6. JAR运行出现ClassNotFoundException异常的解决办法
  7. UE4官方文档UI学习:1.UMG UI设计器快速入门
  8. re模块或正则表达式
  9. 美团外卖、饿了么竞品分析
  10. python均线斜率_一根20日均线闯天下——量化回测“压箱底指标”,值得散户认真研读...
  11. 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」
  12. python基础趣讲精练_Python内置函数精讲精练 enumerate()
  13. moment.js时间操作
  14. 演出经纪人考试大纲、演出经纪人考试资料是什么?
  15. Negroni源码分析
  16. 猴子搬香蕉Java实现,儿童编程游戏CodeMonkey,让你的小猴子不停地吃香蕉
  17. 上学易 APP - 小学信息平台,学区查询,幼升小,小学,学区,学校基础信息平台
  18. AI大语音(八)——GMM-HMM声学模型(深度解析)
  19. web前端怎么获取cookie?
  20. 【STK入门01】插入STK对象

热门文章

  1. 笔记本电脑计计算机硬盘分区,笔记本电脑如何分区,小编教你笔记本电脑如何分区...
  2. 一个简单的静态网页制作(html+css)
  3. android ftp播放器,超强本地播放器一款支持samba、FTP/Windows共享服务-简单不折腾...
  4. 关于瀚高数据库的适配
  5. 超链接标签a实现跳转
  6. CSS - 设置placeholder样式
  7. 戴尔服务器2003系统,Dell PowerEdge R710安装Windows2003系统
  8. 安卓微信王者荣耀野区服务器,王者荣耀安卓微信136区运筹帷幄
  9. java目标和规划_java个人职业发展目标规划书(2)
  10. winhex可以编程c语言吗,如何用winhex解密加了密的mp4视频