パリティチェック, チェックサム, CRCとは 誤り検出の方法



通信技術

公開日:2019/10/14        

In English


パリティチェック、チェックサム、CRC(Cyclic Redundancy Check:巡回冗長検査)はいずれもデータ転送時の誤り検出の手法になります。

■パリティチェック(Parity Check)

送信したデータに含まれる1の数を偶数個(または奇数個。どちらにするかは取り決める)になるように調整するビット(パリティビット)を設け、元のデータに付与して送信する。 受信側は1の数が偶数個(奇数個)でなければ、転送エラーと判断します。なおParityは”等価である"という意味を持っています。



パリティチェックは非常に簡単な仕組みですが、2bit以上のエラーが発生し、1が偶数個になった場合はエラーを検出できない弱点を持っています。

■チェックサム(Check Sum)

元データを所定区間に区切りその総和を求め、その総和の値に所定のアルゴリズムを通して得られた結果をチェックサムとします。 アルゴリズムは、単純に下何桁の値をチェックサムとする方法や、255(0xFF)で割った余りをチェックサムの値とする方法などがあります。 受信側も同じアルゴリズムで演算し答えが一致しない場合、チェックサムエラーと判断します。



チェックサムはパリティチェックよりも精度良くエラーを判断する事ができますが、ノイズ等で連続したエラー(これをバーストエラーという)が発生し、結果的に数値が入れ替わった様な状態のエラーの場合にはそれを検出する事ができません。



チェックサム適用例
チェックサムエラーはデータ転送エラーを検出するだけではなく、プログラムの書き込みエラー、プログラムソースや仕様書等の改ざんを検出するためにも用いられます。 この場合はチェックサム値を人間にも解る様にするため、16進数で表現する場合があります。また仕様書には日本語や英字、スペース等も含まれるため、 それを16進数(or 2進数)に変換する必要があるのですが、それをASCII(アスキー)コード表に従って変換いたします。

ただしチェックサムを算出するアルゴリズムと、16進数への変換表が解っていれば、プログラムソースを悪意を持って改ざんする事も可能なので、 この検出方法も完ぺきではない事を認識しておく必要があります。(ちなみに改ざんという言葉には悪意の有無は関係ありません)。

■CRC (Cyclic Redundancy Check:巡回冗長検査)

CRCはチェックサムより複雑なアルゴリズムを用いて算出する方法です。元のデータに対し生成多項式という式で割り算を行い、その余りを元のデータに付与して送信する方法です。 チェックサムもデータの総和を255で割るという方法もありますが、それより複雑な式で割るのが特徴です。









サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



通信技術