135

私の理解では、ハッシュ コードとチェックサムは似たようなものです。つまり、データ ブロックに対して計算された、比較的一意の数値です。

つまり、データの 2 つのブロックが同じ数値のハッシュ/チェックサム値を生成する確率は十分に低いため、アプリケーションの目的では無視できます。

では、同じことを表す 2 つの単語があるのでしょうか、それともハッシュ コードとチェックサムには重要な違いがあるのでしょうか?

4

13 に答える 13

86

チェックサム は必然的hashcodeであると言えます。ただし、すべてのハッシュコードが適切なチェックサムになるわけではありません。

チェックサムには特別な目的があります --- データの整合性を検証またはチェックします (エラー修正を可能にすることで、それを超えるものもあります)。「良い」チェックサムは計算が簡単で、さまざまな種類のデータ破損 (1、2、3 ビットのエラーなど) を検出できます。

ハッシュコードは、データを何らかの値にマップする数学関数を単純に記述したものです。データ構造 (ハッシュ テーブルなど) のインデックス付けの手段として使用する場合、衝突確率が低いことが望ましいです。

于 2009-01-20T09:31:16.627 に答える
44

それぞれの背後には異なる目的があります。

  • ハッシュ コード - ドメイン全体でランダムになるように設計されています (ハッシュ テーブルなどでの衝突を最小限に抑えるため)。暗号化ハッシュ コードは、計算上、元に戻すことが不可能になるようにも設計されています。
  • チェックサム - データ内の最も一般的なエラーを検出し、多くの場合計算が高速になるように設計されています (データの高速ストリームのチェックサムを効果的に行うため)。

実際には、同じ関数が両方の目的に適していることがよくあります。特に、計算コストに余裕がある場合、暗号的に強力なハッシュ コードは優れたチェックサムです (ランダム エラーによって強力なハッシュ関数が壊れることはほとんどありません)。

于 2009-01-20T09:43:40.033 に答える
25

実際にはいくつかの違いがあります:

  • チェックサムは、入力が異なる場合に (可能な限り頻繁に) 異なる必要がありますが、計算が高速であることも同様に重要です。
  • ハッシュ コード (ハッシュ テーブルで使用するため) にも同じ要件があり、さらに、特に類似した入力に対しては、コード空間全体に均等に分散する必要があります。
  • 暗号化ハッシュには、ハッシュが与えられた場合、このハッシュを生成する入力を構築できないという、はるかに厳しい要件があります。計算時間は二の次であり、アプリケーションによっては、(ブルート フォース攻撃に対抗するために) ハッシュの計算が非常に遅いことが望ましい場合もあります。
于 2009-01-20T09:46:09.000 に答える
15

ハッシュコードとチェックサムはどちらも、データ項目から短い数値を作成するために使用されます。違いは、データ項目にわずかな変更が加えられた場合でも、チェックサム値が変更される必要があることです。ハッシュ値の要件は、現実世界のデータ項目が個別のハッシュ値を持つ必要があるということだけです。

わかりやすい例は文字列です。文字列のチェックサムにはすべてのビットを含める必要があり、順序が重要です。一方、ハッシュコードは、多くの場合、長さが制限されたプレフィックスのチェックサムとして実装できます。つまり、「aaaaaaaaaaba」は「aaaaaaaaaaab」と同じようにハッシュされますが、ハッシュアルゴリズムはそのような衝突を処理できます。

于 2009-01-20T09:46:17.877 に答える
10

ウィキペディアはそれをうまく表現しています:

チェックサム関数は、ハッシュ関数、フィンガープリント、ランダム化関数、および暗号化ハッシュ関数に関連しています。ただし、これらの概念にはそれぞれ異なるアプリケーションがあり、したがって異なる設計目標があります。チェック ディジットとパリティ ビットはチェックサムの特殊なケースであり、データの小さなブロック (社会保障番号、銀行口座番号、コンピューター ワード、シングル バイトなど) に適しています。一部のエラー修正コードは、一般的なエラーを検出するだけでなく、場合によっては元のデータを復元できる特別なチェックサムに基づいています。

于 2009-01-20T09:32:11.803 に答える
9

ハッシュとチェックサムは、どちらもファイルの内容に基づいて値を作成するという点で似ていますが、ハッシュはチェックサムの作成と同じではありません。チェックサムは、データの整合性を検証 (チェック) し、データ転送エラーを特定することを目的としていますが、ハッシュは、データの一意のデジタル フィンガープリントを作成するように設計されています。

出典: CompTIA ® Security+ Guide to Network Security Fundamentals - 第 5 版 - Mark Ciampa - 191 ページ

于 2018-03-13T11:15:20.590 に答える
4

最近ではそれらは交換可能ですが、昔のチェックサムは、すべてのデータを (通常はバイト単位で) 加算し、その値を最後に 1 バイト追加するという非常に単純な手法でした。元のデータのいずれかが破損しているかどうかを確認します。チェック ビットに似ていますが、バイトがあります。

于 2009-01-20T09:33:23.377 に答える
2

ファイルまたはデータが破損していないことを確認するために使用できる、ファイルまたはデータに対して作成されたコード (数値またはその他) を参照するときに、チェックサムという単語を使用する傾向があります。私が遭遇する最も一般的な使用法は、ネットワーク経由で送信されたファイルが (故意またはその他の方法で) 変更されていないことを確認することです。

于 2009-01-20T09:38:17.347 に答える