数据传输在我们的日常工作学习中时时刻刻都在进行。我们从网络上下载了个文件,从U盘拷贝了文件,如何保证数据在回到我们的电脑时,数据是完整的呢?我们采用md5码校验的方式。
什么是MD5码
MD5是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值,常用来确保数据的完整性和一致性。
如何生成MD5码
看上去非常高大上的md5码并不需要我们使用额外的软件来实现,其实其已集成进了我们的操作系统,命令名为md5sum。我们以Linux内核的Ubuntu系统为例来讲解,而windows系统下,大家可以使用安装git时同时安装的git bash命令行下使用。
md5sum基本用法
md5sum [option] [file]
我们直接使用示例来说明:
jobs@jobs-test:~/Downloads$ md5sum Keil.STM32C0xx_DFP.1.0.0.pack 582047e5a867dfb060933389480ac353 Keil.STM32C0xx_DFP.1.0.0.pack
从上面的输出结果可以清晰看到,左侧的这一长串数字就是md5码,右边是对应的文件名。
md5sum高级用法
最开始使用md5sum命令时,我一直不解,为什么输出结果后面还要带上文件名?直到我遇到了-c的选项参数才明白软件开发人员的全面思考与优秀的用户体验。
-c选项,是指定读入文件,并按文件进行md5校验。使用方法也非常简单
jobs@jobs-test:~/Downloads$ md5sum -c september10.md5 cmake-3.27.3-windows-x86_64.zip: OK Keil.STM32C0xx_DFP.1.0.0.pack: OK Keil.STM32H7RSxx_DFP.1.0.0.pack: OK KingstVIS.rar: OK N32G435xx_V2.2.0.zip: OK NXP.LPC812_DFP.13.0.0.pack: OK python-3.11.1-amd64.zip: OK x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z: OK
是不是过于简单了!?那么现在问题来了,这个file.md5是如何来的呢?!
其实,就是利用校验时生成的md5码和文件名组成的。也就是说,我们在发送文件前先进行md5码的生成操作,使用下面的命令
jobs@jobs-test:~/Downloads$ md5sum * >> september10.md5
然后,在我们接收完成文件后,在接收侧使用刚刚提到的-c选项参数进行校验比对即可。