云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

后缀.sha或.md5文件小,用处大:防止文件被篡改,校验文件完整性

jxf315 2024-12-24 13:38:42 教程文章 28 ℃

达芬奇因为工作需要,经常会从网上下载各种文件或者软件,中间不免会遇到一些被篡改甚至含有病毒的文件或软件,造成了很多困扰甚至差点把电脑搞成板砖,于是达芬奇就想是否有方法可以避免此情况,保证下载的文件是完整的源文件呢?答案是肯定的,就是利用哈希算法来进行校验和(checksum)校验,我们在网上下载一些软件或文件时,会看到官方在下载处直接声明检验和哈希值,或者下载目标文件同时附有后缀为.sha或.md5的文件,这个文件就是用来进行文件完整性校验的。

背景知识

可能有些人更懵了,怎么校验完整性呢?在正式开始讲解如何进行校验前,达芬奇先给大家科普下背景知识,如果不想了解背景知识,想直接学习如何进行校验和哈希值校验的,请直接略过这一段,跳到下下一段;首先了解下哈希算法,哈希算法有两个重要特性:一,单向性,哈希算法是一种单向加密算法,即只能通过哈希算法加密一个文件,但却几乎不可能反向解密出源文件经过哈希算法后会得到一个固定数目的随机字符串,但我们几乎不可能通过此字符串反向解密得到源文件;二,防碰撞特性,即哪怕源文件被改变一点点,比如多加或者少加一个空格,经过哈希算法后得到的字符串都会大大的截然不同;正是利用哈希算法这两个特性,得以让我们来进行文件完整性校验,如果文件不完整或者被篡改一个小小的字符,经过哈希算法后都会得到一个完全不同的哈希值。

所以,文件完整性校验的过程即:将我们下载的文件经过哈希算法运算,得到一个唯一的特定哈希值,然后将这个值与已有的哈希值进行对比,如果两者一致,则代表此文件和源文件是一致的,如果不一致,则说明文件不完整或被篡改。哈希算法也有多种算法,常用的有MD5和SHA算法,SHA算法又细分为SHA-1,SHA-2,SHA256,SHA384等算法在此就不展开介绍了,经过MD5算法后会生成一个128个比特即32个字符的字符串,经过SHA算法后生成一个有160个比特值即40个字符的字符串,在下载文件的过程中,哈希值文件(如果有的话,一般后缀为.md5或.sha文件)会指明所采用的哈希算法,如果后缀为.md5,则为经过MD5算法加密文件,后缀为.sha文件,则为SHA算法,若SHA算法没指明SHA-1,或者-2,则优先假设采用的为SHA-1算法,再作进一步检验,顺便提下,我们经常听别人所说的比特币,就是采用的SHA算法中的一种。

以下为正题

讲完了背景知识,下面达芬奇就开始具体介绍利用哈希算法检验文件完整性过程,

1,首先确保有两个文件:a:目标文件,b: 哈希值文件:后缀名为.md5或者.sha的文件(此文件即为校验和文件),亦或者文件下载网站会声明源文件公开的哈希值;如图,达芬奇下载的文件解压后有两个文件:一个为后缀为.rar的目标文件,一个后缀为.sha的哈希值文件;

2,检查哈希值或者哈希值文件采用的什么类型哈希加密算法,一般通过MD5或者SHA两种加密算法得到,SHA算法又分为:SHA1,SHA256,SHA384,SHA512等,经过运算后它们分别得到特定个数的数值;MD5哈希加密后为32个字符串,SHA哈希加密后为40个字符串(若为SHA加密,则优先尝试SHA1,再尝试其他版本);显然,根据后缀名可知达芬奇下载的即为经过SHA加密算法的哈希值文件;

3,进入电脑命令行窗口:同时按住”WIN+r”键(如下图),调出电脑运行窗口,然后输入:cmd(无冒号:,如下图),接着按“enter”键进入windows电脑命令提示符窗口打开命令行(如下图)所示,

4. 通过命令行操作,选择进入待检验文件所在磁盘(比如达芬奇所要校验的文件就在:E:\文件完整性参考举例文件):通常进入CMD命令提示符窗口后,如上图所示,一般会默认进入C盘用户名所在文件夹,此时需要我们首先调整磁盘位置至校验文件所在盘(比如达芬奇的在E盘)直接在命令行末尾”>”后输入你下载的待校验的文件所在的盘符,然后加一个冒号“:”(注意没有双引号,且切记一定要是英文输入模式的冒号”:”,如果不确定,可以直接复制达芬奇的“:”)如达芬奇需校验文件在E盘,直接输入: E: ,然后按”Enter”回车键(如下图所示),就进入到了待校验文件所在磁盘(如下图所示,达芬奇进入到了E盘);

5,通过命令行操作,选择进入待检验文件所在文件夹:成功进入到待校验文件所在磁盘后,然后先返回待校验文件所在文件夹,点击文件夹位置窗口,此时应该会变蓝色(如下图所示),然后按“Ctrl+C”键(注意没有+号)进行复制,然后再返回到命令提示符窗口,在命令行后先输入两个英文字母:cd,(这是change disk的英文首字母缩写),然后按下一个空格键,然后按“Ctrl +V粘贴,复制待校验文件所在位置到此处,然后再按“Enter”回车键,就进入了待校验文件所在文件夹。如达芬奇输入:”cd E:\文件完整性参考举例文件”,如下图所示。

6, 重点来了:成功进入到待校验文件所在文件夹后,接下来是重点一定要仔细听先摁下一个空格键重点,重点,重点),然后输入:“certutil”+“空格键”+“-hashfile”+“校验文件的名字.格式”+”加密方式(比如MD5或者SHA1,SHA2等)”,上述所有+号和“”输入,概括下来就是输入:certutil -hashfile 校验文件名字.格式 加密方式然后再次摁下“Enter”回车键,系统就会自动算出哈希值,比如达芬奇的待校验文件名字为“达芬奇科普”,格式为“rar”格式,因为达芬奇的哈希值文件为.sha文件,所以就优先选择SHA1哈希算法,如果你的文件名为.md5文件,则选择输入MD5,达芬奇的输入为(如图所示):

certutil -hashfile 达芬奇科普.rar SHA1

大家可根据自己的文件名和哈希加密方式对我上面输入的命令行进行相应修改,比如你的文件名为“我爱达芬奇”,文件为“iso” 格式,加密方式为MD5哈希算法的话,则输入:

certutil -hashfile 我爱达芬奇.iso MD5

可以看到上面已经算出此文件的哈希值,并显示:CertUtil: -hashfile命令已完成字样。先不要关闭此命令提示符窗口,先转到下一步;

7,先打开一个浏览器,并再次回到我们待检验文件所在文件夹(比如达芬奇的E:\文件完整性参考举例文件),然后将后缀为.md5或者.sha的哈希值文件,拖拽到已经打开的浏览器,就可出现hash校验值,并外加此文件名,如下图所示,蓝色标记背景的字符串即已有的哈希值。

8,最后一步,比较第7步和第6步的两个哈希值,看两者值是否一致,若一致则证明文件完整,未被篡改,若不一致,则表示文件被篡改,这时候就要慎用或者不用此文件;如果发现哈希值位数不一致,则可能是你哈希加密算法用错了,此时可在第6步加密方式处换个哈希算法试下,若仍不一致,则证明文件不完整或者被篡改。在此有个诀窍,由于哈希值数字位太长了,如SHA算法有40个字符,这时就可利用达芬奇在前面讲到的哈希值的防碰撞特性只需比对哈希值的前5位和后5位值是否一致,就基本能判断出文件是否完整,当然对于严谨的小朋友,在比对过前后5位不放心后,继续比对所有值会更严谨些。

好啦,今天的教程就到这里啦,有任何疑问或者不懂的地方,大家都可在下方留言,或者直接发疑问到达芬奇邮箱:dafq2021@sohu.com,达芬奇都会尽可能地为每一个留言者解答。

Tags:

最近发表
标签列表