-2

私はチェックサムが新しく、プログラミングもかなり新しいです。私はかなり単純なC++プログラム(psi測定)を持っています。これはArduinoボードに転送しています。 crc16はOKか、crc32に行かなければならないのでしょうか?シンプルなC++プログラムに正しいチェックサムを選択するにはどうしたらいいですか?

+2

どのようなチェックサムを使用していますか?動機がなければ、あなたの質問に答えることはできません。だから、**あなたの質問を編集して**改善してください。 –

+3

あなたのニーズが暗号的に強力なダイジェストを必要とする場合は、私を信頼してください。よく知られた、よくテストされた*暗号ライブラリを使用してください。シンプルなcrc32やそれ以外の暗号ではないチェックが必要な人は書くことができますが、正直言ってパブリックにたくさんのものがありますので、そうする必要はないでしょう。これは主にニーズに基づいており、状況の必要性を知っているだけです。 – WhozCraig

+0

「正確さ」があなたの質問に正しい単語であることを確信していますか? 「正確さ」を意味しますか? –

答えて

0

実行ファイルがあなたのArduinoボードに正しく転送されているかどうかを確認する方法として、md5のような簡単なチェックサムを使用することもできます。例えば、インスピレーションのためthis answer

0

信頼性の低い通信チャネルのコンテキストでチェックサムが発生します。通信チャネルは抽象である。ビットは一方の端に入り、もう一方の端で出てきます。 信頼できないチャネルは、単純に出てくるのビットがに行ったものと同じではないことを意味します。

今、明らかに、最も極端な信頼性の低いチャネルはランダムビットが出てきました。これは使えないので、入力と出力が相関するチャンネルに焦点を当てます。

まだ、私たちは多くの異なる腐敗モデルを持っています。一般的なモデルの1つは、各ビットが失敗する可能性が高いP%です。別の一般的なモデルは、ビットエラーが典型的にはバーストで来ると考えている。各ビットは、その後、長さNのエラーのバストを開始するP%の確率を有し、各ビットは50%が間違っている可能性がある。問題に応じて、さらにいくつかのモデルが存在します。より高度なモデルでは、ビットが完全に欠落する可能性も考慮されます。

正しいチェックサムは、モデルによって予測されるエラーのタイプを非常に高い確率で検出しますが、他のタイプのエラーではうまく機能しない可能性があります。

例えば、インターネットIP層では、最も一般的なエラーは、失われるIPパケット全体です。そのため、TCPはシーケンス番号を使用してこの特定のエラーを検出します。

関連する問題