为什么对未压缩数据和压缩数据使用 CRC?

Why use CRC of uncompressed vs compressed data?

Wikipedia article for Gzip 表示有 "an 8-byte footer, containing a CRC-32 checksum and the length of the original uncompressed data"。为什么他们附加未压缩数据的 CRC 而不是压缩数据的 CRC?

我只能想到缺点,比如必须处理整个数据流,运行它通过 Deflate 算法,然后才能验证 CRC。

我认为 gzip 在压缩数据的方式上有一定的自由度,因此计算压缩数据的 crc 可能会给出不同的校验和。计算未压缩数据的 crc 意味着您使用不同的算法对相同的 crc 进行压缩、解压缩和压缩。

而最后,你关心的是解压后的数据是不是该有的样子。您可能在压缩或解压缩算法中有错误;压缩数据的 crc 不会找到它。