1

これをどのように尋ねるか正確にはわかりませんが、キーを含むことができる構造を考えると、これが私が望んでいることです5+n(したがって、私のシステムには 5 つのキーが必須であり、追加のキーはオプションです) - ハッシュを希望します同一のキー6を持つキーハッシュがキー構造体5のスーパーセットであり、5追加情報を提供することを決定できるメカニズム。具体的には、すべてのリクエストで完全な構造体をネットワーク経由で送信することを妨げる制約があるため、ハッシュメカニズム。

明確にするために、いくつかの情報を次に示します (サンプルには2+nキーが必要です)。

---
  name: codebeaker
  occupation: developer

でハッシュするとSHA-512-256次のようになります。

SHA-512
04fe500f2b3e779aba9ecb171224a04d35cc8453eb1521c7e31fd48b56b1cce9
b1e8af775e177e110982bfb16a6ca8652d7d9812ab8a8c316015dc9d6b3b54f7

SHA-256
4833be7086726e7ffd82db206f94f0a4f9fdf7fba00692f626157afed4587c74

追加のキーを追加する場合 (以下の例)、拡張されたデータセットが最初のデータセットのスーパーセットであると推測できるようにしたいと考えています。

---
  name: codebeaker
  occupation: developer
  telephone: 49 (0) 123 45 67

ただし、当然のことながら、MD5SHA-nおよび私が調べた他のハッシュ関数では、これを行う方法はありません。例:

SHA-512
2fe2c1f01e39506010ea104581b737f95db6b6f71b1497788afc80a4abe26ab0
fc4913054278af69a89c152406579b7b00c3d4eb881982393a1ace83aeb7b6a2

SHA-256
77c2942e9095e55e13c548e5ef1f874396bfb64f7653e4794d6d91d0d3a168e2

(明らかに)類似点はありません...

私たちのユースケースである構造体としてフォーマットされたこのデータは、サードパーティによってシステムに供給されます。データの処理には非常にコストがかかり、操作ごとに 2 ~ 3 秒かかります。以前の実行の結果があることがわかっている場合、その時間の約 50% を取り戻すことができます。頭字語であるキーと値のペアや、まったく関連性がないにもかかわらず、類似しているように見える他のテキストをよく目にするため、ここに適しています。

必要なのは、データをチェックサムする方法です (ここで私の回答にバイアスがかかっている可能性があります)。これにより、同じデータを持つすべての同じキーが含まれているかどうかBのスーパーセットであると判断できます。Aしかし、多くの場合、私たちのキー/値エントリには非常に多くのデータがありstruc、より完全なコピーを既に見たと判断するためだけに毎回ネットワーク経由で送信すると、費用がかかり、無駄になります。

4

2 に答える 2

0

暗号化ハッシュは、次のプロパティを使用して特別に設計されています。

  • それらは一方向性関数です。特定のハッシュ値の特定の入力、またはこの値にハッシュするランダム入力を再計算することは実際には不可能です。
  • 入力サイズが固定出力サイズよりもはるかに大きいため、衝突が発生する必要がありますが、同じハッシュ値になる2つの異なる入力値を見つけることも実際には不可能です。
  • まったく同じ入力値は、常にまったく同じハッシュ値にハッシュされます。
  • 入力に小さな変更を加えると、ハッシュ値が完全に異なります。単一の入力ビットを反転すると、出力ビットの平均で50パーセント変化します。

したがって、暗号化ハッシュは、任意のバイナリデータの一意の識別子として使用できます。「name:codebeaker」でさえ、「name:Codebeaker」とは異なるハッシュを持っています。

キーのセットが固定され、固定された順序で、常に完全で、新しいキーによってのみ拡張され、各キーに許可される表現が1つしかない場合は、5つの古いキーのハッシュを計算し、既存のハッシュと比較できます。現在のセット。

キーが常に一意であるが、セットが混在している可能性がある場合は、キーごとに個別のハッシュを計算し、これらを個別のデータベースに保存して既存のセットを検索できます。

これを超えると、暗号化ハッシュはその仕事に適したツールではない可能性があります。

[編集]

もう1つのアプローチは、最初にキーをアルファベット順に並べ替えてから、並べ替えられたセットからハッシュ値を取得することです。これで、注文を気にすることなくセットを識別できます。最初に単一のキーの個々のハッシュを取得し、代わりにハッシュを並べ替えて、並べ替えられたハッシュのリストに対してハッシュを取得する方が実用的な場合があります。これには、一意のキーが必要です。

于 2011-01-04T10:04:07.693 に答える
0

アイデアは、キーと値のペアごとに異なるハッシュを使用することです。したがって、完全な構造体の「ハッシュ」はハッシュのコレクションです。

ユースケースが常に同じ順序の 5 つの同一のキーであり、追加のキーがある場合は、必須のキーに 1 つのハッシュを使用し、オプションのキーに 1 つのハッシュを使用できますが、オプションのキーを含む構造体が 1 つであることを検出できません。オプションのキーを含む別の構造体のスーパーセット。

わずかなバリエーションは、必要なキーに 1 つのハッシュを使用し、構造体全体に 1 つのハッシュを使用することです。

また、(要件に応じて)キーと値のペアに小さなチェックサムを使用して、何かを同じではないとしてすばやく破棄できるようにすることもできますが、何かが一致していることをより正確に判断するには、大きなハッシュが必要です。

于 2011-01-04T09:53:39.990 に答える