文件校验

一、文件校验概述

校验文件是下载和上传文件时常用的手段,目的就是验证本地和服务器中的文件是否存在被篡改、丢失等问题。网络中的环境是复杂与恶劣的,如果你的文件不经过校验这一必要步骤,可能被中间人攻击替换或篡改文件后导致文件不可用或者传递了不同于你原意的文件,这在任何情况下都是非常致命的。如果你正准备拿着未经校验的镜像文件安装系统,那么如果部分数据丢失,会导致你的安装过程一定出现问题;如果你拿着未经校验的补丁文件升级系统,那么如果部分数据丢失,可能会导致你的系统彻底崩溃,在生产环境中尤为重要。检验文件的一致性是必要且不可少的一步,有良心的官网会在下载页面放置MD5或者SHA256校验值,方便下载完成文件后进行文件校验。

二、单向散列函数

单向散列函数能够验证密文是否被破坏和修改,单向散列函数满足了密码学特性中的完整性。

数据/文件通过单向散列函数计算后得出的散列值就是数据/文件的指纹。常见的单向散列函数有MD5、SHA2。单向散列函数满足数据的完整性的特点:

  • 散列值长度固定:MD5计算得出的散列值固定长度为128bits、SHA1则是160bits

  • 散列值具有雪崩效应:修改原始数据中的任一字符,得到的散列值会发生天翻地覆的变化

  • 散列值不可逆:散列函数的算法特性就是只能通过原始数据计算得到散列值,不能通过散列值还原原始数据

  • 散列值唯一性:不存在不同的原始数据具有相同的散列值

三、文件校验工具

1、Windows

Windows中用于文件校验的工具叫做certutil,CMD调用。

certutil -hashfile <Your_File_Name> [md5 | sha256]

2、Linux

Linux中用于文件校验的工具是分开的,常用的有md5sum和sha256sum。

md5sum filename1 filename2 filename3 ...
sha256sum filename1 filename2 filename3 ...

3、Cisco

Cisco设备中用于文件校验的命令在不同的OS中所用的工具也是不同的。

1)IOS/IOS-XE/FX-OS

verify /md5 nvram:startup-config

2)NX-OS

show file bootflash:startup-config [md5 | sha256]