cksum, sum
语法
cksum [-o 1 | 2 | 3] file ...
sum file ...
cksum 用于检查文件的CRC是否正确。确保文件从一个系统传输到另一个系统的过程中不被损坏。CRC是一种排错检查方式,该校验法的标准由
CCITT
所指定,至少可检测到99.998%的已知错误。
sum 是cksum的其中一种特殊实现,效果同
cksum -o 1 file
参数
-
-o [1|2|3]
指定不同算法,这里只支持1,2,3
这3种参数值。
Example
-
cksum -o [1|2|3] LICENSE
cksum 命令最终输出以空格分割的3个字段
-
CRC校验码
-
字节总数或者块数量
当
-o 1
和-o 2
时代表的是块数量,因为历史的原因算法1的块大小为1024
,算法2的块大小为512
,部分块四舍五入。当-o 3
时代表的是文件的字节数。 -
文件名
-
3425401509 11357 LICENSE
zzw:blog zzw$ cksum -o 1 LICENSE
33983 12 LICENSE
zzw:blog zzw$ cksum -o 2 LICENSE
60321 23 LICENSE
zzw:blog zzw$ cksum -o 3 LICENSE
2069693628 11357 LICENSE
原理
-
算法1 即
-o 1
算法1是之前BSD系统使用的
sum(1)
算法,和之前AT&T System V(Unix)使用的sum(1)
带-r
参数算法。这是一个16位校验和,在每次叠加前右移;溢出被丢弃。 -
算法2 即
-o 2
算法2是之前AT&T System V(Unix)使用的
sum(1)
的默认算法。这是一个32位校验和,定义如下:s = sum of all bytes; r = s % 2^16 + (s % 2^32) / 2^16; cksum = (r % 2^16) + r / 2^16;
-
算法3 即
-o 3
算法3通常称为“32位CRC”算法。这是32位校验和。
使用的默认CRC基于网络标准ISO/IEC 8802-3:1989中用于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
网友评论