了解 `cksum` 命令输出

了解 `cksum` 命令输出

当我运行该命令时cksum,我得到以下输出

2836376023   36 myfile.txt

我理解 36 是文件的大小,后面跟着文件的名称

但我想知道这个数字的公式2836376023生成。我知道从一个文件到另一个文件,数字是完全不同的。

答案1

该数字2836376023是文件的 CRC 校验和

CRC = 循环冗余校验

简而言之,数学运算(多项式除法) 对文件内容执行,余数用于生成校验和。如果文件自上次计算以来发生了变化,则校验和会有所不同,因此可以使用该方法确保文件在传输过程中没有损坏。该方法仅适用于检查意外数据损坏;它不能抵御蓄意攻击,因为以 CRC 校验和保持不变的方式修改文件是相当简单的。

为了扩展这一点,执行校验和的程序(例如cksum)定义了一个生成多项式作为多项式除法的分母。要检查的文件的内容是分子。

详细的计算例子可以在维基百科上找到:
循环冗余校验的计算

如果你想知道具体实现细节cksum,可以阅读源代码萨凡纳网上

或者通过以下方式下载启用源下载和跑步(在家里)

sudo apt update
mkdir coreutils-src && cd coreutils-src
apt source coreutils

然后cd进入新目录。cksum.c位于src子目录中。

相关内容