CRC16計算から変更された1つまたは複数のバイトを判別することは可能ですか?
たとえば、最後に2バイトの値としてCRC16を含む780バイトの構成ファイルを取得したとします(したがって、CRC16は最初の778バイトに基づいて計算されます)。ファイルの内容(最後にCRC16を含まない778バイト)のCRC16を計算し、それが異なる場合、エラーが発生したバイトオフセットを特定できますか?
CRC16計算から変更された1つまたは複数のバイトを判別することは可能ですか?
たとえば、最後に2バイトの値としてCRC16を含む780バイトの構成ファイルを取得したとします(したがって、CRC16は最初の778バイトに基づいて計算されます)。ファイルの内容(最後にCRC16を含まない778バイト)のCRC16を計算し、それが異なる場合、エラーが発生したバイトオフセットを特定できますか?
CRC16の2つの計算だけを使用します。
CRC16は単なるチェックサムです。違いがあることはわかりますが、どこにあるかはわかりません。
簡単な答えは「いいえ」です。できません。
CRCの計算方法と、数学的にはハッシュ演算と呼ばれるものを理解する必要がある理由を理解するため。つまり、生成されたハッシュコード(この場合はCRC)から出力を確実に再構築することはできません。
特定の入力テストケースに基づいて元のテキストに関する情報を推測できる統計分析方法がありますが、ほとんどの場合、素朴なオブザーバーには、CRCから元のテキストに直接マッピングすることはできません。したがって、元のテキストが特定の方法で作成されていない限り、ほとんどの場合、データが変更されたオフセットを知る方法はありません。