从非官网上下文件,或者用某些加速软件下文件,都会存在被别人植入病毒或后门的风险,此时计算MD5等校验和就很有必要了。通常网站提供文件时会同时提供该文件的校验值,如MD5,SHA1,SHA256等,当文件下载完成后,计算它的校验值,如果和网站提供的一致,就可以放心使用了。
Linux 使用命令行计算校验值
Linux下可以直接使用md5sum/sha1sum/sha256sum等命令直接计算文件的对应校验值。
md5sum a.txt
sha1sum b.txt
sha256sum c.txt
Windows 使用命令行计算校验值
在命令行下,可以使用Windows自带的certutil命令来计算一个文件的校验值:
支持的哈希算法有:MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512
G:\>certutil -hashfile -?
用法:
CertUtil [选项] -hashfile InFile [HashAlgorithm]
通过文件生成并显示加密哈希
选项:
-Unicode -- 以 Unicode 编写重定向输出
-gmt -- 将时间显示为 GMT
-seconds -- 用秒和毫秒显示时间
-v -- 详细操作
-privatekey -- 显示密码和私钥数据
-pin PIN -- 智能卡 PIN
-sid WELL_KNOWN_SID_TYPE -- 数字 SID
22 -- 本地系统
23 -- 本地服务
24 -- 网络服务
哈希算法: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
CertUtil -? -- 显示动词列表(命名列表)
CertUtil -hashfile -? -- 显示 "hashfile" 动词的帮助文本
CertUtil -v -? -- 显示所有动词的所有帮助文本
certutil的使用方法非常简单,语法如下:
certutil -hashfile 文件名 哈希算法
例如,计算我当前目录下名为 abc.txt 的 SHA512 的值:
G:\>certutil -hashfile abc.txt SHA512
SHA512 的 abc.txt 哈希:
fb515afabfdc076e527931fd5ca85c3f0a838df7c7c0529ba3a8af0151e4c32799fb1d72e9dfc65111fb1376f30e96d7872908c735c4d889c8e27d8c97370cd8
CertUtil: -hashfile 命令成功完成。
关于校验值
校验值是一组16进制数,不区分大小写,校验值本身只与文件内容有关,只要文件内容不改变校验值就不变;如复制/剪切/粘贴,修改文件创建时间/访问时间,修改文件读/写/执行属性等操作都不会导致校验值发生改变。
当掌握快速计算校验值方法后,以后发送文件时就可以附带上该文件的校验值以防止文件中途损坏或被他人无意间修改。
扩展阅读
certutil介绍:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil
MD5介绍:https://en.wikipedia.org/wiki/MD5
SHA介绍:https://en.wikipedia.org/wiki/Secure_Hash_Algorithms