web-dev-qa-db-ja.com

CRC32対CRC32C?

CRC32とCRC32Cの違いは何ですか? CRC32を長い間知っていますが、CRC32Cを今日聞いたばかりです。それらは基本的に同じ方法ですか(つまり、両方が特定のデータに対して同じハッシュになる)?

28

Zipや他の多くの場所で見つかったCRC32は、多項式0x04C11DB7を使用します。その逆の形式の0xEDB88320はおそらくよく知られており、リトルエンディアンの実装でよく見られます。

CRC32Cは異なる多項式(0x1EDC6F41、反転0x82F63B78)を使用しますが、それ以外は計算は同じです。結果は当然異なります。これはCastagnoli CRC32とも呼ばれ、32ビットの完全なCRCステップを3サイクルで計算できる新しいIntel CPUで最も顕著に見られます。これは、CRC32Cがより一般的になる理由です。これにより、3サイクルのレイテンシにもかかわらず並列に1つの32ビットワードを効率的に処理する高度な実装が可能になります(3つのデータストリームを並列に処理し、線形代数を使用して結果を結合することにより) )。

35
DarthGizka