質問

私はバイナリ文字列されています(六角レンチ以下)を使用しており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, その上、その他のビット単位のメッセージに設定ゼロになります。この場合は二つのメッセージ PQ 同じ長さのその後 crc(P)^crc(Q)=crc(P^Q).(これはコアcrcアルゴリズムを無視して事前-事後処理のcrc.)

更新:

ダウンロードできます 作妨害.c, る問題点を解決しの変更にメッセージを生産するCRC.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top