質問

最初にチェックサムを含む4KBバッファーがあるとしましょう。このバッファには、他のバッファーを参照するメタデータが含まれています。 NBバッファーはメモリマッピングファイルです。バッファーの1つが無効であることに気付きます(チェックサムがうまくいかないか、チェックサムが問題ないが、無効なバッファーを参照しています)。次に、別の無効なバッファーを参照するバッファーを無効にしたいと思います。バッファを無効にする数学的に最良の方法は何ですか?チェックサム自体を破損しているため、データと一致したり、データを破損したりして、チェックサムと一致しない可能性があります。それとも、3番目の、より良い方法はありますか?その価値のために、これはCRC32バリアントです。

役に立ちましたか?

解決

参照バッファーのCRCが有効であると仮定すると、単にそれから1つを差し引くだけで、バッファーが正常に無効になります。あなたの説明から、これはあなたが 参照 バッファーは、CRCが間違っている可能性があるバッファーです。

参照CRC32の場合 そうではありませんでした 有効、最も安全な賭けはCRCを計算することです それから 1つを引きます。最初に正しいCRCを知る必要があります。 ありそうもない 正しいものになるためには、まだ約40億人に1人のチャンスが正しい可能性があります。

CRCを変更すると、ここで最も安全なオプションのようです。 CRC32アルゴリズムの数学的分析を行っていない場合、データの特定の変更が生成されないことを保証する方法はありません 同じ CRC値(多数のデータセットが同じCRCにマッピングされる可能性があるため)。

しかし、それは確実性です 明確な データセットは常に同じCRCを生成するため、CRCを他の何かに変更することにより、ブロックが無効になることを確認できます。

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