CRC計算
テキストや16進バイト列のCRC-8・CRC-16・CRC-32を計算。主なプリセットと任意の多項式に対応
ツールを読み込んでいます…
テキスト、16進バイト列、ファイルのCRCを、名前の付いた34種類のCRC-8、CRC-16、CRC-32アルゴリズム、または独自のパラメーターで計算します。Modbusフレームの確認や、機器がどのCRCを使っているかを調べるときなどに使えます。
使い方
- 「テキスト」「16進バイト列」「ファイル」のいずれかを選び、データを入力します。
- CRC-16/MODBUS などの「アルゴリズム」を選びます。CRCが16進数、10進数、2進数で表示されます。
- 「フレームに付加するバイト」には、CRCのバイトを送る順番が表示されます。
- 不明なCRCを特定するには、期待される値を「CRC値から探す」に入力します。
- 一覧にないアルゴリズムの場合は、「パラメーター」を開いて、ビット幅、多項式、初期値、ビット反転、最終XORを設定します。
計算方法と補足
- プリセットとチェック値は、RevEng Catalogue of parametrised CRC algorithms に従っています。各プリセットは、ASCIIテキスト 123456789 のCRCであるチェック値で検証済みです。
- MODBUSのようなビット反転ありのアルゴリズムはふつう下位バイトから、それ以外は上位バイトから送られます。
- ファイルはこの端末で読み込まれ、アップロードされません。チェックサム(Sum)、XOR、LRC、Fletcher-16、Adler-32も表示されます。
よくある質問
- 01 03 00 00 00 0A のCRC-16(Modbus)は?
- 0xCDC5です。Modbus RTUでは下位バイトから付加するので、フレームは C5 CD で終わります。
- CRC-16/CCITT-FALSE、XMODEM、KERMITの違いは?
- どれも多項式0x1021を使います。CCITT-FALSEは初期値0xFFFF、XMODEMは初期値0、KERMITは初期値0でビット反転ありです。123456789 に対する値は、それぞれ0x29B1、0x31C3、0x2189です。
- CRC-32の値がほかのソフトと違うのはなぜ?
- まず入力バイトを確認してください。UTF-8とLatin-1では同じテキストでもバイト列が異なります。標準のCRC-32(ISO-HDLC)では 123456789 に対して0xCBF43926になります。MPEG-2やBZIP2は別の設定を使います。
- CRCで改ざんを検出できますか?
- いいえ。CRCは偶発的な誤りを検出しますが、誰でもデータを書き換えてCRCを計算し直せます。SHA-256などの暗号学的ハッシュを使ってください。