简介
现在从网络下载文件,为了安全起见很多平台都会提供哈希校验码,来提供所下载文件的内容摘要,下载完成后只要本地的文件具有一样的哈希码,就能够确保你下载的东西没有被替换。所以养成随手校验哈希是很一个很好的习惯。
语法
常用的算法有 md5, sha-1 ,sha256.
windows 平台
certutil -hashfile filename md5
certutil -hashfile filename sha1
certutil -hashfile filename sha256
macos 平台
md5 filename
shasum -a 1 filename
shasum -a 256 filename
如果不想先保存为文件,而是直接计算hash值,可以使用管道技术,比如想计算 hello 这个字符串的哈希值
echo "hello" | shasum -a 256 # 计算的为 "hello\n" 的哈希,echo 会直接在输出的字符串后面添加 '\n'
echo -n "hello" | shasum -a 256 # 计算的为 "hello" 的哈希,-n 会阻止 echo 为字符串添加 '\n'
linux 平台
md5sum filename
shasum -a 1 filename
shasum -a 256 filename
echo "hello" | shasum -a 256 # 计算的为 "hello\n" 的哈希,echo 会直接在输出的字符串后面添加 '\n'
echo -n "hello" | shasum -a 256 # 计算的为 "hello" 的哈希,-n 会阻止 echo 为字符串添加 '\n'
测试
在Linux平台
以字符串hello为例
$ echo -n "hello" | shasum -a 1
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
$ echo "hello" | shasum -a 1
f572d396fae9206628714fb2ce00f72e94f2258f # 这个结果与保存在文件中的结果一致
将hello字符串保存在文件中:
# md5
b1946ac92492d2347c6235b4d2611184
# sha-1
f572d396fae9206628714fb2ce00f72e94f2258f
# sha-256
5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03
注意: 因为windows平台行尾用的是回车换行符,即’\r\n’,也叫做CRLF。而linux系行尾用的只有换行符,即’\n’,也就是LF。因此,windows平台要想得到和linux平台一致的结果,首先要调整文件格式到unix格式。