Checksum 是验证文件在网络传输过程中,有没有损坏或篡改的常用方法。

比如在golang安装包下载页面中,可以看到下载包对应的SHA256 Checksum验证码。

1
2
3
File name	Kind	OS	Arch	Size	SHA256 Checksum
go1.22.3.src.tar.gz	Source			26MB	80648ef34f903193d72a59c0dff019f5f98ae0c9aa13ade0b0ecbff991a76f68
go1.22.3.darwin-amd64.tar.gz	Archive	macOS	x86-64	67MB	610e48c1df4d2f852de8bc2e7fd2dc1521aac216f0c0026625db12f67f192024

常见的Checksum校验和有 md5、SHA,还有GPG验证。

md5sum checksum

md5检验和工具md5sum

1
md5sum go1.22.3.src.tar.gz

md5sum help

sha checksum

sha1sum 验证原理和md5相同。

1
2
ha1sum install.log      #install.log的sha1值
0750a96a87738a2d2173bbee12e40e6ab17136c6  install.log

sha256sum 用于计算文件的 SHA-256 哈希值

1
2
3
4
5
6
7
8
9
sha256sum [OPTION]... [FILE]...

-b, --binary  # 以二进制模式读取
-c, --check   # 从文件中读取 SHA256 校验和并进行检查
    --tag     # 创建 BSD 风格的校验和
-t, --text    # 以文本模式读取(默认)
-z, --zero    # 每行输出以 NUL 结尾,而不是换行符,并禁用文件名转义
    --help    # 显示此帮助并退出
    --version # 输出版本信息并退出

使用示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sha256sum file.txt

# 多个文件
sha256sum file1.txt file2.txt

# 将 SHA-256 哈希值保存到文件中
sha256sum file.txt > hash.txt

# 验证文件的 SHA-256 哈希值
sha256sum -c hash.txt

gpg checksum

gnupg download

gpg使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[root@localhost zhangy]# gpg -c test.txt      #加密test.txt

[root@localhost zhangy]# ls |grep test.txt    #生成了一个文件,以.gpg结尾
test.txt
test.txt.gpg

[root@localhost zhangy]# rm -f test.txt       #删除原有文件

[root@localhost zhangy]# gpg test.txt.gpg     #解密
gpg: 钥匙环‘/root/.gnupg/secring.gpg’已建立
gpg: CAST5 加密过的数据
gpg: 以 1 个密码加密
gpg: 警告:报文未受到完整的保护

[root@localhost zhangy]# ls |grep test.txt    #原有文件重新生成
test.txt
test.txt.gpg