piapia123
ja

CRC-32 チェックサムの計算

エンコード

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

テキストの CRC-32 チェックサムを求めます。CRC は最も一般的な誤り検出符号です —— 改ざんには耐えられません(鍵がないので誰でも再計算できます)が、伝送や保存中の偶発的な破損は確実に検出します。ネットワークのフレーム、アーカイブ、ディスクのセクタ、ファームウェアのイメージが、いずれも完全性の確認に使っています。注意したいのは「CRC-32」が単一のアルゴリズムではなく一族だという点です。同じ多項式でも、初期値・入出力のビット反転・最終 XOR 値が違えば互換性のないチェックサムになり、しかも算出される数値は互いに無関係です。ここではよく使われる6つの変種を並べ、それぞれの用途を添えています。入力は UTF-8 バイトとして扱い、結果は zlib や各実装と 1 桁まで一致します。

機能

  • 6つの変種:IEEE 802.3・Castagnoli(CRC-32C)・Koopman・BZIP2・JAMCRC・MPEG-2
  • 出力は16進数(大文字・小文字を切替可)または10進数
  • 日本語は UTF-8 バイトで計算し、zlib や各言語の実装と一致します
  • 各変種に用途を明記 —— 切り替える前に相手側の仕様を確認してください
  • テーブル駆動なので、数 MB の入力でもミリ秒で終わります
  • 計算は端末内で完結し、内容がアップロードされることはありません

使い方

  1. 入力欄に内容を貼り付けると、結果がリアルタイムで表示されます
  2. 相手のシステムに合わせて変種を選びます(既定の IEEE が一般に「CRC-32」と呼ばれるものです)
  3. 必要に応じて16進数/10進数、大文字を切り替えます
  4. 「コピー」でチェックサムを取り出せます

よくある質問

CRC-32・CRC-32C・CRC-32K は何が違うのですか?
多項式が違うので、同じデータでもまったく異なる3つの値になります。CRC-32(IEEE 802.3)は最も一般的なもので、zip・gzip・PNG が使っています。CRC-32C(Castagnoli)は iSCSI・SCTP・ext4 や一部のストレージシステムで使われ、ハードウェア実装が速くなるよう多項式が選ばれています。CRC-32K(Koopman)は 32 ビット CRC の中で最も検出能力が高く、高い信頼性が求められる場面で使われます。どれが必要かは相手側のシステム次第で、好みで選ぶものではありません。
他のオンラインツールと結果が違うのはなぜですか?
ほとんどの場合、変種の選択ミスです。CRC-32 に初期値・ビット反転の有無・最終 XOR 値を加えると、互換性のない6つのアルゴリズムが導けます。しかもどれも「正しそうな8桁の16進数」を返します。相手がどの変種を使っているかを先に突き止めてください(プロトコル仕様に明記されているか、「123456789 を入れるとこの値」という検証値が添えられていることが多いです)。本ツールの各変種は CRC パラメータ目録の check 値に固定されています。
CRC はハッシュや署名として使えますか?
使えません。CRC は偶発的な誤り(伝送ノイズ、ビット反転)を見つけるための設計で、意図的な改ざんには耐えられません —— 鍵がないため、改変したデータに対しても誰でも正しいチェックサムを再計算できます。改ざん検知には HMAC やデジタル署名を使ってください。「ダウンロードが壊れていないか」の確認なら CRC でも SHA-256 でも構いませんが、SHA-256 も同じくらい安価なので、現在はこちらが通例です。
空入力のチェックサムが全ゼロにならないのはなぜですか?
初期値があるためです。CRC-32 の初期値は 0xFFFFFFFF で、空入力のとき最終 XOR 値の 0xFFFFFFFF とちょうど打ち消し合って 00000000 になります。一方 CRC-32/MPEG-2 の最終 XOR は 0 なので、空入力では FFFFFFFF になります。これらのパラメータこそが「どれも CRC-32 を名乗るのに互換性がない」理由です。本ツールは空入力に対して空文字列を返し、チェックサムを表示しません —— たいていはまだ何も貼り付けていないだけだからです。

関連ツール