Hash & Crypto Helpers

CRC計算機バイト列とモデルをそろえる

入力形式と正確なモデルを選んで計算します。結果には使用したパラメーターとバイト順が残ります。

CRC計算機

テキストまたはバイト列

チェックサムの結果

計算すると結果が表示されます。空のテキストも計算できます。

テキストとファイルの内容はブラウザー内で処理します。

設定
ビット幅
32
多項式(16進数)
04C11DB7
初期値(16進数)
FFFFFFFF
入力ビットを反射
はい
出力ビットを反射
はい
最終XOR(16進数)
FFFFFFFF

カスタムCRCは最高次項を省いた正方向の多項式を使います。Adler-32の設定は固定です。

数値として4桁または8桁の16進数を入力。前後の空白と0xは使用可能。リトルエンディアンのバイト列では比較しません。

文字列は1,000,000 UTF-16単位、復号後は1 MiBまで。ファイルは1個2 GiBまで、1 MiBずつ読み込みます。

計算すると結果が表示されます。空のテキストも計算できます。

CRC計算機は、機器の応答とテストデータのチェック値が合わないときに役立ちます。CRC16という名前だけではモデルを特定できません。多項式が同じでも、初期値や反射の指定によって結果が変わります。

まず既知のメッセージで設定を確かめてから、実際のパケットを調べてください。画面上で同じ文字に見えても、文字コードや末尾の改行が違えば入力バイト列は一致しません。

CRC計算機で設定の差を見つける

結果とモデルを一緒に確認

このCRC計算機では、計算に使った全パラメーターを結果に添えます。ARCとMODBUSは多項式が同じでも初期値が異なります。数値だけを記録するより、再現に必要な条件を残せます。

同じバイト列が異なるパラメーターのモデルに分岐し、異なるチェック値になる図。

分割しても一つのチェックサム

ファイルの各ブロックを順番に同じ状態へ加算し、最後に結果を確定します。ブロックごとのCRCを後からXORする方式ではありません。読み込みの進行を確認し、途中で中止できます。

連続するファイルのブロックが一つの累積状態を通り、最終チェック値になる図。

照合前に確かめたい三つの点

01

省略されたモデル名を補う

ZIPでよく使うCRC-32にはISO-HDLCを選びます。CRC-32CとMPEG-2は別のモデルです。独自プロトコルの場合は多項式、初期値、RefIn、RefOut、XorOutを仕様書から確認してください。

02

文字とバイトを区別する

16進モードの31 32 33は3バイトですが、テキストでは空白も文字として処理されます。別の文字コードを検証する場合は変換済みのファイルか正確な16進バイト列を指定します。

03

標準値とバイト順を比べる

123456789を使うと標準Checkを確認できます。MODBUSの数値4B37をリトルエンディアンで送ると37 4Bになります。期待値欄には4B37を入力し、編集後はCtrl/Cmd+Enterで再計算します。

モデルの選択から再現用レポートまで

八つのプリセット

CRC計算ツールにはARC、MODBUS、IBM-3740、XMODEM、ISO-HDLC、CRC-32C、MPEG-2とAdler-32を用意しています。カスタムモデルの幅は16または32ビットです。

入力反射と出力反射を別々に設定

RefInは入力バイト内のビットを、RefOutは最終レジスターのビットを反転します。結果を送信するときのバイト順とは別の指定なので、独立した項目で確認できます。

Adler-32チェックサムの初期状態

S1は1、S2は0から始まり、法65521で累積します。空の入力なら00000001です。CRC用の多項式や最終XORをAdlerに適用することはありません。

条件を含むJSONレポート

モデル、数値パラメーター、入力形式、バイト数、期待値と比較結果を保存できます。16進数、10進数、2進数と二種類のバイト順を併記し、元のテキストやファイル内容は含めません。

入力を変えずに計算するための制約

不完全な16進数は補完しない
完全なバイト対とASCII空白だけを受け付けます。0x、カンマ、コメント、奇数桁や非ASCII空白はエラーです。フレーム末尾のCRCを自動で除外したり、結果を末尾に追記したりしません。
ファイルとテキストの上限は別
文字列は1,000,000 UTF-16単位、復号後は1 MiBまでです。ファイルは一度に1個、最大2 GiBで、1 MiBずつ処理します。空入力は有効ですが、ディレクトリーやチェックリストの一括検証は対象外です。
文字の正規化は行わない
テキストはUTF-8固定で、BOM文字、空白、改行を保持します。不正なサロゲートは拒否します。ファイルは生のバイト列を使い、展開や文字コード変換は行いません。
モデルは自分で指定する
未知のCRCの推定、多項式の逆算、CRC8/64、ソースコード生成や修復用バイトの生成には対応しません。設定を変えると処理を中止し、古いCRCチェックサムの出力を無効にします。
一致は安全性の証明ではない
CRCとAdlerは偶発的なデータ破損の検出用です。衝突や意図的な改変を防げず、送信元の認証や破損データの復元もできません。必要な安全性は暗号学的な方式で別途確保してください。

CRC計算機についての質問

CRC計算サイトによって結果が違うのはなぜですか?

まず入力バイトを比較し、次に幅、多項式、初期値、両方の反射、最終XORをそろえてください。数値表示と逆順のバイト表示を比べていないかも確認します。末尾の改行一つでも結果が変わります。

CRC-32とCRC-32Cの違いは?

ISO-HDLCの多項式は04C11DB7、CRC-32Cは1EDC6F41です。同じ32ビットでも互換ではありません。123456789の結果はそれぞれCBF43926、E3069283です。

CRC-16/CCITT-FALSEとCRC-16/MODBUSの違いは何ですか?

CCITT-FALSEの正式モデル名はIBM-3740で、多項式1021、初期値FFFF、反射なしです。MODBUSは8005、FFFF、両方の反射ありです。XMODEMは1021、初期値0000であり、CCITT-FALSEとは異なります。

大きなファイルでもブラウザだけでCRCを計算できますか?

このCRC計算機は最大2 GiBのファイル1個をWorkerで分割処理します。全ファイルを一度にメモリーへ展開する必要はありません。端末によって所要時間は異なり、途中で中止できます。

CRCとは何ですか?暗号ハッシュとの違いは?

CRCは通信や保存中の意図しない変化を検出するための計算です。SHA-256などの暗号ハッシュとは目的が異なり、改ざん耐性や認証機能はありません。チェック値の一致だけで送信者を信用することはできません。

解決しませんでしたか?

CRC計算機に戻る

CRC計算機で既知のサンプルを確かめ、設定を一つずつ変えてから、確認済みの条件をレポートに残しましょう。