美文网首页
Linux命令日日说(十三)-- cksum

Linux命令日日说(十三)-- cksum

作者: spt_genius | 来源:发表于2020-03-25 01:01 被阅读0次

    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个字段

      1. CRC校验码

      2. 字节总数或者块数量

        -o 1-o 2时代表的是块数量,因为历史的原因算法1的块大小为1024,算法2的块大小为512,部分块四舍五入。当-o 3时代表的是文件的字节数。

      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
      

    相关文章

      网友评论

          本文标题:Linux命令日日说(十三)-- cksum

          本文链接:https://www.haomeiwen.com/subject/cgdnyhtx.html