CRC-32 / ISO-HDLC
PKZip · PNG · イーサネット
最も一般的な CRC-32 実装。CRC-32b とも呼ばれます。多項式 0x04C11DB7 の反映形式、つまり 0xEDB88320 を使用します。入力バイトと出力は両方ともビット反映され (LSB ファースト)、初期値と最終 XOR は両方とも 0xFFFFFFFF に設定されます。
ZIP、gzip、PNG イメージ、イーサネット フレーム (IEEE 802.3)、PKCS#7、および多くのレガシー システムで広く使用されています。これは事実上の「デフォルト CRC-32」の亜種です。
| 多項式 | 0x04C11DB7 (通常) / 0xEDB88320 (反射) |
| 初期値 | 0xFFFFFFFF |
| 入力反射 | はい (RefIn = true) |
| 出力反射 | はい (RefOut = true) |
| 最終 XOR | 0xFFFFFFFF |
| 値のチェック | 0xCBF43926 (「123456789」の場合) |
CRC-32C / カスタニョーリ
iSCSI・NVMe・SCTP
1993 年に G. Castagnoli らによって提案されたこのバリアントは、多項式 0x1EDC6F41 (反映形式 0x82F63B78) を使用します。同じハミング距離では、ISO-HDLC 多項式よりも強力なバースト エラー検出が可能です。
ハードウェア アクセラレーションは、Intel SSE4.2 および ARM CRC32 命令を通じて利用できます。これは、iSCSI、NVMe、Btrfs、SCTP などの最新のストレージおよびトランスポート プロトコルで広く使用されています。
| 多項式 | 0x1EDC6F41 (通常) / 0x82F63B78 (反射) |
| 初期値 | 0xFFFFFFFF |
| 入力反射 | はい (RefIn = true) |
| 出力反射 | はい (RefOut = true) |
| 最終 XOR | 0xFFFFFFFF |
| チェック値 | 0xE3069283 (「123456789」の場合) |
CRC-32 / MPEG-2
MPEG-2・DVB・ATSC
ISO-HDLC と同じ 0x04C11DB7 多項式を使用しますが、入力も出力も ビット反映 (MSB ファースト、ビッグエンディアン) ではありません。初期値は 0xFFFFFFFF で、最終的な XOR は無効になります (XorOut = 0x00000000)。
主に MPEG-2 トランスポート ストリームの PSI/SI テーブル (PAT、PMT、NIT、および関連テーブル) に加えて、DVB および ATSC ブロードキャスト システムの整合性チェックに使用されます。
| 多項式 | 0x04C11DB7 |
| 初期値 | 0xFFFFFFFF |
| 入力反射 | いいえ (RefIn = false) |
| 出力反射 | いいえ (RefOut = false) |
| 最終 XOR | 0x00000000 (無効) |
| チェック値 | 0x0376E6E7 (「123456789」の場合) |
CRC-32 / BZIP2
BZip2 · AAL5 · DECT
パラメータは MPEG-2 とほぼ同じです (多項式 0x04C11DB7、反射なし、初期値 0xFFFFFFFF)。唯一の違いは、 と 0xFFFFFFFF との最終 XOR であり、すべてのビットが反転されます。 CRC-32/AAL5 または CRC-32/DECT-B とも呼ばれます。
BZip2 圧縮ファイル形式と ATM AAL5 プロトコルのトレーラー チェックサム フィールドで使用されます。
| 多項式 | 0x04C11DB7 |
| 初期値 | 0xFFFFFFFF |
| 入力反射 | いいえ (RefIn = false) |
| 出力反射 | いいえ (RefOut = false) |
| 最終 XOR | 0xFFFFFFFF |
| 値の確認 | 0xFC891918 (「123456789」の場合) |
UTF-8 テキスト
デフォルト · 一般
入力を UTF-8 文字列として処理し、バイトに変換して、CRC32 を計算します。これは、プレーン テキスト、ソース コード、JSON、および同様のコンテンツに最も一般的なモードです。
注: 同じテキストを GBK や UTF-16 などの異なる文字セットでエンコードすると、異なるバイト ストリームが生成されるため、異なる CRC32 値が生成されます。このツールは常に UTF-8 を使用します。
| に最適 | プレーン テキスト、ソース コード、JSON、XML |
| 例 | 「こんにちは」 → 48 65 6C 6C 6F (5バイト) |
| CJK 文字 | ほとんどの CJK 文字は UTF-8 で 3 バイトを使用します |
16進数
バイナリデータ・プロトコルフレーム
入力を生の 16 進バイト リテラル として扱います。スペースと改行は無視されます。 2 つの 16 進文字ごとに 1 バイト (00 ~ FF) になります。
ネットワーク フレーム、ファームウェア イメージ フラグメント、メモリ ダンプなどの正確なバイナリ データの CRC チェックが必要な場合に便利です。 Wireshark または 16 進ダンプ出力を直接貼り付けることができます。
| 形式 | 0-9 および a-f / A-F のみが許可されます |
| 文字数 | 偶数である必要があります (1 バイトあたり 2 文字) |
| 例 | 48656C6C6F = "Hello" (5 バイト) |
| 空白 | 自動的に無視されます。 48 65 6C は 48656C と同じです |
Base64
エンコードされたバイナリ · 証明書 · 画像
入力を Base64 でエンコードされた文字列 として処理し、生のバイトにデコードして、CRC32 を計算します。 PEM 証明書、JWT ペイロード、データ URI、およびその他の Base64 コンテンツに役立ちます。
標準の Base64 アルファベット (A-Z a-z 0-9 + /) をサポートします。パディング文字 = はオプションです。 URL セーフな Base64 ( - _ ) はサポートされていません。
| アルファベット | A-Z a-z 0-9 + / = |
| 例 | SGVsbG8= → "Hello" (5バイト) |
| URL セーフ | サポートされていません。 -→+ と _→/ を最初に |
に置き換えます
| ⚠ 1 文字 | 無効 — 6 ビットでは 1 バイトを形成できません (8 ビットが必要) |
| 2 文字 | にデコード 1 バイト (最小有効入力) |
| 3 文字 | 2 バイトにデコード |
| 4 文字 | 3 バイトにデコード (パターンは 4 文字ごとに繰り返されます) |
16進数
最も一般的な · デフォルト
値を、先頭に 0x を付けた 8 桁の大文字 16 進数として表示します。各文字は 4 ビット、合計 32 ビットを表します。これは、ほとんどのツール、ソース コード、ドキュメントで使用される標準形式です。
10 進数の出力と比較して、16 進数ではバイト境界の検査が容易になり、メモリ ダンプとプロトコル フィールドがより自然に一致します。
| 例 | 0xCBF43926 |
| 長さ | 8 16 進文字 = 32 ビット |
| 基数 | 基数 16 (0-9、A-F) |
| | コード、ドキュメント、Wireshark、16 進エディタ |
に最適
10進数
符号なし 32 ビット整数
チェックサムを 符号なし 32 ビット 10 進整数 として、範囲 0 ~ 4,294,967,295 (2³²-1) で表示します。一部の言語やツールでは CRC 値を 10 進数形式で比較し、多くの場合、データベース フィールドにこの表現が保存されます。
注: CRC32 の結果は符号なし整数として扱われる必要があります。 Java や C# などの signed int 型では、0x7FFFFFFF を超える値は負に見える場合があるため、uint またはより広範な符号なし表現に変換する必要があります。
| 例 | 3421780262 |
| 範囲 | 0–4,294,967,295 |
| 注 | Java int の場合、 & 0xFFFFFFFFL で変換 |
| に最適 | データベース、Python 構造体の値、数値比較 |
バイナリ
ビットレベル解析
チェックサムを 0b という接頭辞が付いた 32 ビットのバイナリ文字列として表示します。各文字は 0 または 1 で、左側の最上位ビットに揃えられ、必要に応じて先頭にゼロが埋め込まれます。
主に、内部 CRC アルゴリズムの理解、多項式除算、ティーチング、ビットレベルのチェックサム処理を必要とする組み込みシナリオの研究に役立ちます。
| 例 | 0b11001011…00100110 |
| 長さ | 左ゼロパディング付きの 32 ビットに固定 |
| 最上位ビット | ビット 31 (MSB) は左端に表示されます |
| 最適な用途 | アルゴリズム解析、ティーチング、組み込みデバッグ |
8進数
Unix · ファイル システム
チェックサムを 0o の接頭辞が付いた 11 桁の 8 進数として表示します。 3×11 = 33 > 32 であるため、32 ビットには最大 11 個の 8 進数文字が必要です。各 8 進数の数字は 3 ビットを表します。
8 進出力は、最新の CRC ワークフローでは一般的ではありませんが、一部の Unix ツール、組み込みファームウェア ツールチェーン、および古い通信プロトコル仕様では依然として使用されています。
| 例 | 0o31572031046 |
| 長さ | 最大 11 桁の 8 進数 |
| 1 桁あたり | 3 ビット (0 ~ 7) を表します |
| に最適 | Unix ツール、古いプロトコル仕様 |