近期有网友在博客中留言,希望俺介绍散列值校验文件的知识。所以俺干脆写一篇”文件完整性校验”的扫盲教程。由于本文是扫盲性质,尽量不涉及太技术化的内容。
★什么是”完整性校验”?
所谓的”完整性校验”,顾名思义,就是检查文件是否完整。那么,什么情况下会导致文件不完整捏?大概有如下几种情况。
1. 感染病毒
比方说你的系统中了病毒,病毒感染了某个软件安装包或者某个可执行程序。那么该文件的完整性就被破坏了。
2. 植入木马/后门
还有一种文件不完整的情况,是被别有用心的人植入木马或后门。比方说某些国内的软件下载站点,它们提供的 Windows 安装光盘镜像已经被安置了后门。
3. 传输故障
这种情况主要发生在网络下载时。因为网络传输是有可能发生误码的(传输错误),另外还有可能下载到快结束的时候断线(下载不完整)。这些情况就会导致你下载的文件不完整。
如今的上网环境相比当年的Modem拨号,已经有明显改善。所以这种情况应该不多见了。
★散列算法(哈希算法)扫盲
◇什么是”散列算法/哈希算法”?
这里所说的”散列”是一种计算机算法,洋文叫做 Hash,有时候也根据音译称为哈希。
散列算法可以把任意尺寸的数据(原始数据)转变为一个固定尺寸的”小”数据(叫”散列值”或”摘要”)。
◇摘要长度
对于某个具体的散列算法,得到的散列值长度总是固定的。散列值的长度又称”摘要长度”。
以下是常见散列算法的摘要长度
CRC32








