チェックサム

データの誤り検出のために計算される値。データ転送やファイル保存時の整合性確認に使われる。

チェックサムとは、データの整合性を検証するために計算される固定長の値です。送信元と受信先でチェックサムを比較することで、データが転送中に破損していないかを確認できます。原理はシンプルで、データ全体を特定のアルゴリズムで処理し、短い「指紋」のような値を生成するものです。

代表的なチェックサム方式には CRC (巡回冗長検査)、Adler-32、MD5、SHA-256 などがあります。CRC-32 は 32 ビットの検査値を生成し、Ethernet フレームや ZIP アーカイブで広く使われています。MD5 は 128 ビット (16 進数 32 文字) のダイジェストを生成しますが、衝突耐性が低いため、現在ではセキュリティ用途には推奨されません。ネットワーク技術の書籍でチェックサムの仕組みを学べます。

ソフトウェアのダウンロード時に提供される SHA-256 チェックサムを検証することで、ファイルが改ざんされていないことを確認できます。Linux ディストリビューションの ISO イメージでは、公式サイトにチェックサム値が掲載されています。コマンドラインでは sha256sum (Linux) や shasum -a 256 (macOS) で簡単に検証できます。

チェックサムとハッシュ値は混同されがちですが、厳密には目的が異なります。チェックサムは偶発的なデータ破損の検出を主目的とし、ハッシュ値は意図的な改ざんの検出やデータの一意識別を目的とします。ただし実務では、SHA-256 のような暗号学的ハッシュ関数がチェックサムとして使われることも多く、両者の境界は曖昧です。

テキストデータのチェックサムを計算する際は、文字エンコーディングに注意が必要です。同じ文字列でも UTF-8 と Shift_JIS ではバイト列が異なるため、チェックサム値も変わります。改行コードの違い (LF と CRLF) も結果に影響するため、プラットフォーム間でのファイル検証では改行コードの統一が重要です。

文字数カウントとの関連では、チェックサムの文字列長はアルゴリズムによって固定されています。CRC-32 は 8 文字、MD5 は 32 文字、SHA-256 は 64 文字の 16 進数文字列です。入力データのサイズに関係なく出力長が一定である点が、チェックサムの重要な特性です。データ通信基礎の書籍も参考になります。