在网站下载文件时,经常会看到后面跟着一个校验码,它的作用是用来校验下载下来的文件是否发生改变,方式是在本地对文件用相同的算法计算效验码,如果和提供的一致,则说明文件完整且正确。
校验码的算法有多种,常用的有md5、sha1、sha256等,MacOS上自带了几个命令可以计算出这些值。新建个文本文件a.txt,将字符串abc写入,用这个文件来测试。
1. md5
- md5命令1 
 2$ md5 a.txt 
 MD5 (a.txt) = 900150983cd24fb0d6963f7d28e17f72
- openssl命令给a.txt改个名字,你会发现结果还是一样的,甚至,直接计算字符串abc的md5,你会发现结果还是一样的1 
 2$ openssl md5 a.txt 
 MD5(a.txt)= 900150983cd24fb0d6963f7d28e17f72由此可以验证,md5计算的是文件内容的校验值,只要内容不变,不管以何种形式,最终结果都是一致的。1 
 2
 3
 4
 5
 6$ mv a.txt ab 
 $ md5 ab
 MD5 (ab) = 900150983cd24fb0d6963f7d28e17f72
 $ md5 -s 'abc'
 MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
2. sha
Secure Hash Algorithm,安全哈希算法,本质上和md5类似。它有多种类型SHA-1、SHA-224、SHA-256,等。查一查百科,可以知道,后者出现的原因,是因为前者可以被破解,虽多是碰撞方式,但也是能破解,所以一个被破解,就设计更复杂的算法,久而久之就有了这么多种,相信随着时间发展,科技进步,后续会有更多的类型出现。
- shasum命令参数-a,指定算法类型,默认是SHA-1,可选值有1,224,256,384,512,512224,512256,可以通过1 
 2
 3
 4
 5$ shasum -a 1 a.txt 
 a9993e364706816aba3e25717850c26c9cd0d89d ab
 $ shasum -a 256 a.txt
 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad abshasum -h命令查看
- openssl命令第二个参数sha1,就是用来指定算法,openssl毕竟是老大,支持的比shasum多了很多,可以通过1 
 2
 3
 4
 5$ openssl sha1 a.txt 
 SHA1(ab)= a9993e364706816aba3e25717850c26c9cd0d89d
 $ openssl sha256 a.txt
 SHA256(ab)= ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adopenssl sha1 -h查看
3. 其他
这里多说一句,这几个命令都支持管道方式,也就是可以对上一个命令的结果,直接计算目标值
| 1 | $ cat a.txt | md5 |