侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux cksum命令教程:如何计算和验证文件的校验和(附实例及用法详解)

Linux cksum命令介绍

cksum是英文单词checksum的缩写,意思是校验和。cksum命令可以计算和验证文件的校验和,它使用的算法是循环冗余校验(Cyclic Redundancy Check,CRC)。CRC是一种常用的错误检测技术,它可以检测数据传输或存储过程中的错误。cksum命令可以支持多种不同的CRC算法,例如CRC-32、MD5、SHA-1等,用户可以通过选项来指定要使用的算法。cksum命令的输出包括三个部分:校验和、文件字节数和文件名。如果没有指定文件名,或者文件名为-,cksum命令会从标准输入读取数据。cksum命令通常用于确保通过不可靠的方式(例如网络)传输的文件没有被损坏,通过比较接收到的文件和原始文件的cksum输出来验证文件的完整性。

Linux cksum命令适用的Linux版本

cksum命令是GNU coreutils的一部分,它是Linux系统中基本的文件、shell和文本操作工具的集合。因此,cksum命令可以在大多数Linux发行版中使用,例如Ubuntu、Debian、Fedora、CentOS等。如果某些Linux版本没有预装cksum命令,可以通过包管理器来安装coreutils包。例如,在CentOS 7中,可以使用yum命令来安装:

[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils

在CentOS 8中,可以使用dnf命令来安装:

[linux@bashcommandnotfound.cn ~]$ sudo dnf install coreutils

Linux cksum命令的基本语法

cksum命令的基本语法格式如下:

cksum [选项]... [文件]...

其中,选项可以用来指定要使用的CRC算法、输出格式、校验模式等,文件可以是一个或多个要计算或验证校验和的文件名,如果没有指定文件名,或者文件名为-,cksum命令会从标准输入读取数据。

Linux cksum命令的常用选项说明

cksum命令的常用选项有以下几个:

选项说明
-a, --algorithm=TYPE指定要使用的CRC算法,可以是sysv、bsd、crc、md5、sha1、sha224、sha256、sha384、sha512、blake2b或sm3,其中sysv和bsd分别相当于sum -s和sum -r,crc相当于cksum,md5、sha1、sha224、sha256、sha384、sha512和blake2b分别相当于md5sum、sha1sum、sha224sum、sha256sum、sha384sum、sha512sum和b2sum,sm3是一种中国国家标准的哈希算法,只能通过cksum命令使用
-b, --base64以base64编码输出校验和,而不是十六进制
-c, --check从文件中读取校验和并进行验证,文件的格式应该是cksum命令或其他相似的程序的输出
-l, --length=BITS指定校验和的位数,必须是8的倍数,且不能超过blake2算法的最大位数
--raw以二进制格式输出校验和,而不是十六进制
--tag以BSD风格的格式输出校验和,这是默认的格式
--untagged以反转的格式输出校验和,不包含算法类型

在验证模式下,cksum命令还有以下几个选项:

选项说明
--ignore-missing不报告或返回缺失文件的错误
--quiet不打印验证成功的文件的信息
--status不输出任何信息,只通过返回值表示验证结果
--strict如果校验和文件的格式不正确,返回非零值
-w, --warn警告校验和文件的格式不正确

Linux cksum命令的实例

下面是一些使用cksum命令的实例:

计算文件的校验和和字节数

[linux@bashcommandnotfound.cn ~]$ cksum file1
1234567890 1024 file1

这个命令会计算file1文件的校验和和字节数,使用的是默认的CRC-32算法,输出的格式是BSD风格的。

计算标准输入的校验和和字节数

[linux@bashcommandnotfound.cn ~]$ echo "Hello world" | cksum
222957957 12

这个命令会计算标准输入的校验和和字节数,使用的是默认的CRC-32算法,输出的格式是BSD风格的。

使用MD5算法计算文件的校验和

[linux@bashcommandnotfound.cn ~]$ cksum -a md5 file1
MD5 (file1) = 0a4d55a8d778e5022fab701977c5d840 1024 file1

这个命令会使用MD5算法计算file1文件的校验和,输出的格式是BSD风格的。

使用base64编码输出文件的校验和

[linux@bashcommandnotfound.cn ~]$ cksum -b file1
EjRWeJ63lQIvqwGXd8XaQD 1024 file1

这个命令会使用base64编码输出file1文件的校验和,使用的是默认的CRC-32算法,输出的格式是BSD风格的。

从文件中读取校验和并进行验证

1234567890 1024 file1
222957957 12 file2
[linux@bashcommandnotfound.cn ~]$ cksum -c checksums.txt
file1: OK
file2: OK

这个命令会从checksums.txt文件中读取校验和并进行验证,如果验证成功,会打印OK,如果验证失败,会打印FAILED。

以反转的格式输出文件的校验和

[linux@bashcommandnotfound.cn ~]$ cksum --untagged file1
1234567890 1024 file1

这个命令会以反转的格式输出file1文件的校验和,不包含算法类型,使用的是默认的CRC-32算法。

Linux cksum命令的注意事项

使用cksum命令时,需要注意以下几点:

  • cksum命令只能检测文件是否被损坏或篡改,不能保证文件的安全性或完整性,因为不同的文件可能有相同的校验和,而且校验和本身也可能被伪造或修改。
  • cksum命令支持的CRC算法有不同的强度和性能,一般来说,校验和的位数越长,错误检测的能力越强,但计算的速度也越慢。在选择CRC算法时,需要根据具体的需求和场景进行权衡。
  • cksum命令的输出格式和其他类似的程序(例如md5sum、sha1sum等)的输出
0

评论区