本文へスキップ

CRC計算

テキストや16進バイト列のCRC-8・CRC-16・CRC-32を計算。主なプリセットと任意の多項式に対応

ツールを読み込んでいます…

テキスト、16進バイト列、ファイルのCRCを、名前の付いた34種類のCRC-8、CRC-16、CRC-32アルゴリズム、または独自のパラメーターで計算します。Modbusフレームの確認や、機器がどのCRCを使っているかを調べるときなどに使えます。

使い方

  1. 「テキスト」「16進バイト列」「ファイル」のいずれかを選び、データを入力します。
  2. CRC-16/MODBUS などの「アルゴリズム」を選びます。CRCが16進数、10進数、2進数で表示されます。
  3. 「フレームに付加するバイト」には、CRCのバイトを送る順番が表示されます。
  4. 不明なCRCを特定するには、期待される値を「CRC値から探す」に入力します。
  5. 一覧にないアルゴリズムの場合は、「パラメーター」を開いて、ビット幅、多項式、初期値、ビット反転、最終XORを設定します。

計算方法と補足

よくある質問

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などの暗号学的ハッシュを使ってください。