手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

cksum(1)

名称

cksum - 写入文件校验和与文件大小

用法概要

/usr/bin/cksum [file...]

描述

cksum 命令可以计算每个输入文件的循环冗余校验 (Cyclic Redundancy Check, CRC) 并将其写入标准输出,还会将每个文件中八位字节的数目写入标准输出。

对于每个成功处理的文件,cksum 的写入方法采用以下格式:

"%u %d %s\n" <checksum>, <# of octets>, <path name>

如果未指定文件操作数,则省略路径名及其前导空格。

使用的 CRC 基于用于引用以太网标准中 CRC 错误检查的多项式。

CRC 校验和的编码通过生成多项式定义:


G(x) = x**32 + x**26 + x**23 + x**22+ x**16 + x**12 + x**11
+ x**10 + x**8 + x**7 + x**5 + x**4 + x**2 + x + 1

从数学的角度来讲,对应于指定文件的 CRC 值按以下过程定义:

  1. 将要求得的 n 位数视为模数为 2 的 n1 项式 M(x) 的系数。n 位数即为文件的位数,最高有效位是文件的第一个八位字节的最高有效位,最后一位是最后一个八位字节的最低有效位,以零位填补(如有必要)得到一个八进制整数,后跟一个或多个八进制值,以二进制值表示文件长度,最低有效八位字节。将使用能够表示该整数的最小数目的八位字节。

  2. M(x) 乘以 x 32(即左移 32 位),然后按模数为 2 除以 G(x),得出 ≤ 31 次项余数 R(x)。

  3. R(x) 的系数视为 32 位序列。

  4. 将该位序列补全,结果即为 CRC。

操作数

支持下列操作数:

file

要检查的文件的路径名。如果未指定 file 操作数,将使用标准输入。

用法

cksum 命令通常用于根据某个可疑文件的可信版本快速比较该可疑文件,以确保通过可疑介质传输的文件在接收时完整无缺。但是,不能将这种比较视为加密形式的安全保护。损坏的文件生成的 CRC 与原始文件生成的相同几率极小;蓄意欺骗非常困难,但或许也不是不可能。

尽管 cksum 的输入文件可以属于任何类型,但是结果不必是字符特殊设备文件的结果。由于本文档并未指定执行输入时使用的块大小,因此字符特殊文件的校验和无需处理这些文件中的所有数据。

这种算法以一个字节流划分成若干八位字节表示。如果某个文件在两个系统之间传输并且经过了任何数据转换(例如将 8 位字符改为 9 位字节或者将 Little Endian 字节顺序改为 Big Endian),不会得到相同的 CRC 值。执行此类转换的实现程序可以扩展 cksum 来应对此类情况。

有关 cksum 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)

环境变量

有关影响 cksum 执行的以下环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES 和 NLSPATH。

退出状态

将返回以下退出值:

0

所有文件都已成功处理。

>0

出现错误。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

另请参见

digest(1)sum(1)bart(1M)attributes(5)environ(5)largefile(5)standards(5)