CRC32
CRC32 は GF(2) 上の多項式除算に基づく 32 ビットの巡回冗長検査であり、伝送エラーの検出に使われる。暗号学的ハッシュではない。
目的
データ整合性のためにバーストエラーを効率的に検出する。セキュリティ認証には使えない。
メカニズム
入力ビット列は GF(2) 上の多項式とみなされ、生成多項式(例: 0x04C11DB7)で割られる。剰余が 32 ビット CRC になる。異なる多項式(IEEE、Castagnoli など)は検出特性が異なる。CRC32C(Castagnoli)はより良い性能と検出能力を提供する。
ユースケース
- ZIP/GZIP ファイルの検証
- Ethernet フレームの FCS
- SSE/AVX による高速チェックサム
- iSCSI のデータ整合性
例
- 入力
helloOutput0x3610a686IEEE 802.3 polynomial
よくあるエラー
- Using CRC32 for cryptographic authentication (not collision resistant)
- Use HMAC-SHA256 for authentication