【しーあーるしー】

CRC(巡回冗長検査) とは?

💡 データにお守りを付けて、壊れていないか見守る番人
📌 このページのポイント
CRC(巡回冗長検査)の仕組み 送信側 データ + CRC 多項式で割った余り = CRC値を付加 送信 受信側 データ CRC 同じ計算を実行して CRC値が一致するか確認 一致 → データ正常 破損なし 不一致 → データ破損 再送要求 使用例:Ethernet、USB、ZIP、PNG、GIF などで広く採用
CRC(巡回冗長検査)のイメージ
ひよこ ひよこ

CRCって何をするものなの?

ペンギン先生 ペンギン先生

データが壊れていないかチェックする仕組みだよ。送るデータから数学的に短い検査値を計算して一緒に送り、受け取った側が同じ計算をして値が合うか確認するんだ。

ひよこ ひよこ

普通のチェックサムとは違うの?

ペンギン先生 ペンギン先生

単純な足し算のチェックサムより検出精度がずっと高いんだ。CRCは多項式の割り算を使うから、連続したビットの誤りや入れ替わりも見つけられるよ。

ひよこ ひよこ

多項式の割り算って難しそう…

ペンギン先生 ペンギン先生

考え方は筆算の割り算と同じだよ。データを大きな数として、決められた多項式で割った余りがCRC値になるんだ。CRC-32なら32ビットの余りが出るよ。

ひよこ ひよこ

どんなところで使われてるの?

ペンギン先生 ペンギン先生

Ethernetのフレーム、USBの通信、ZIPファイル、PNGやGIF画像のフォーマットなど、至る所で使われているよ。ただしCRCは偶然の破損検出用で、悪意ある改ざんの検出にはハッシュ関数を使う必要があるから注意してね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CRC」って出てきたら「データが壊れていないかチェックする仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Cyclic Redundancy Check」 = 巡回冗長検査
💬 Cyclic(巡回する)多項式でRedundancy(冗長な)Check(検査)値を作るからこの名前だよ
← 用語集にもどる