Joe*_*Rip 3 command-line checksums
当我运行命令时,cksum我得到以下输出
2836376023 36 myfile.txt
Run Code Online (Sandbox Code Playgroud)
我知道 36 是文件的大小后跟文件名
但是我想知道数字2836376023是如何生成的公式。我知道从一个文件到另一个文件的数字是完全不同的。
数字2836376023是文件的CRC校验和
简而言之,对文件的内容执行数学运算(多项式除法),余数用于生成校验和。如果自上次计算后文件已更改,则校验和会有所不同,因此可用于确保文件在传输过程中没有损坏。该方法仅用于检查意外数据损坏;它对于蓄意攻击是不安全的,因为以 CRC 校验和保持不变的方式修改文件是非常简单的。
为了扩展这一点,执行校验和的程序(例如cksum)将生成多项式定义为多项式除法中的分母。要检查的文件的内容是分子。
计算的详细示例可以在维基百科上找到:
Computation of Cyclic Redundancy Checks
如果您想了解 的具体实现细节cksum,可以在 Savannah 在线阅读源代码
或者通过启用源下载并运行(在您的家中)来下载它
sudo apt update
mkdir coreutils-src && cd coreutils-src
apt source coreutils
Run Code Online (Sandbox Code Playgroud)
然后cd进入新目录。cksum.c位于src子目录中。