当今时代无数老师们的珍贵资料,每一份都值得大家潜心学习。但是时间宝贵,要如何才能保证学习资料的正确性是第一重要的事情。
二狗子有一个专门存放“学习资料”的服务器,同时也会定期在本地电脑中备份相同的资料。最近,朋友问二狗子要一份“高数的自我修养”,二狗子就将服务器上的外链发给了他,并炫耀了一下自己服务器性能有多强,下载速度良心。朋友很是开心,同样炫耀了一下他的 5G 手机,并给自己的下载时速截图,P 上了一个大拇指表情。
不完整的“学习资料”
“高数的自我修养.zip”在谈笑间下载完成。朋友也掀开捂好的被窝,点开了资料,关上了灯开始学习。
“欢迎您收看本次天气预报,我们明天再见!”
很明显,这份“学习资料”有问题,30 分钟了连反双曲线函数都没讲到。
朋友非常愤怒,指责二狗子肯定是同班同学派来阻止他学习进步的内鬼。但是二狗子肯定不是这样的人。二狗子还去翻看了本地的学习资料,确确实实详详细细的介绍了“反双曲线函数原理和使用。”
那么这个内鬼是谁呢?
二狗子仔细分析了下,觉得有以下几种可能:
1、朋友在下载时,有部分数据丢失了;2、对应文件中毒了,有部分文件损坏了;3、朋友的同班同学为了防止他学习进步,黑进了服务器,篡改对应文件;
朋友无法好好学习的悲痛告诉我们一个经验:从网上下载任何有价值的数据,尤其是“学习资料”,都需要检查下载文件的完整性,确保下载的文件与原始文件完全相同。
当你需要确保文件完整性的时候除了看一遍这个文件,还有其他简单的方法么?这就要说到 MD5 算法了。
什么是 MD5 算法
从字面上理解,MD5 即代表信息摘要算法 5。它第一次出现是在 1992 年 8 月,罗纳德·李维斯特向互联网工程任务组(IETF)提交了一份重要文件,详细描述了这种算法的原理。由于这种算法的公开性和安全性,在 90 年代被广泛使用在各种程序语言中,用以确保资料传递无误。该算法大致实现思路是接受随机数据(文本或二进制)作为输入值,并生成固定长度的“ 哈希值”作为输出值。输入数据可以是任何大小或长度,但是输出“哈希值”的长度始终是固定的。
从上面的示例中可以看到,就算输入的值长度都不相同,该算法都会生成固定大小(32 位十六进制)的 MD5 哈希值,举例:6e854a5fd2a642730994b36f90621782
哈希值对于每个文件都是唯一的,即便文件大小和类型相同,不同的文件也会拥有不同的 MD5 哈希值。因此只需要对比二狗子的“高数的自我修养.zip”的 MD5 值和朋友下载文件 MD5 值,就可以知道文件是否是同一个。
具体操作就是,二狗子先给服务器上的学习资料生成对应的 MD5 哈希值。当朋友将文件下载到 PC 后,再次为下载的文件生成一段 MD5 哈希值。这两个哈希值如果是一致的,就代表学习资料是完整的,没有任何数据丢失。反之则代表资料是错误的。一顿对比操作后,朋友发现确实是下载的文件不一样,二狗子重新给朋友发送了正确的学习资料,这下他终于可以好好进步了。
自从闹了这一出,二狗子在上传和下载学习资料时,也养成了比对 MD5 哈希值的习惯,就再也不用担心拿错资料,安心勤奋地学习,最终考上了心爱的大学,找到了满意的工作,赚到了足够的工资,下单了所有文件全部使用 MD5 校验的又拍云存储。