マッチング、CRCコードを追加することによってメッセージ
-
11-12-2019 - |
質問
私はバイナリ文字列されています(六角レンチ以下)を使用しておりCRC-16-CCITT.いすべての機能の集約して、設定値に戻すには、0x1D0F.知っていることができ、Crc試合はこの値を追加することによって2バイトの最後に元のメッセージがないといけないというか、付加価値が必要です。
Ex.
0x01 0000 0000 0000 0000 0000 0000 0000 0000 13D8
追加価値の0x13D8
を加えるこ13D8のメッセージのCRC与えてくれる希望の0x1D0F.
のお役に立てるように計算方法本0x13D8値が大きくする。
すること綺麗でコードthatdす。
解決
の理論は非常に簡単なものなどもありますのでケアを実施します。
任意に選択でき16ビットのどこでもメッセージを含むバイトの16個のビットの散乱ものでもありませんよう)に定義されていません。ここでは xi のための i=0..15.その後の使用ビットCRCアルゴリズムのメッセージが生成および更新の係数16の線形方程式 xi, の16ビットのcrc.
それは、単純マトリクス方程式 Ax+b=c.の業務のため Ax+b=c ない通常の増殖、しかもシングルビット や や 排 ます。
現在ご利用の通常の方法で反転させ、マトリクス A, はやと や や xor (追加または減算して現在も同じことを、排),計算 b^c 掛けると、逆.しかし、これらの値の組み易いのではないかと思い xi ビットのcrc.
追加の簡素化することも必要としない実際のメッセージの長さの位置 xi, その上、その他のビット単位のメッセージに設定ゼロになります。この場合は二つのメッセージ P や Q 同じ長さのその後 crc(P)^crc(Q)=crc(P^Q).(これはコアcrcアルゴリズムを無視して事前-事後処理のcrc.)
更新:
ダウンロードできます 作妨害.c, る問題点を解決しの変更にメッセージを生産するCRC.