web-dev-qa-db-ja.com

10バイト未満のハッシュアルゴリズム

私はそれが安全でないことを知っていますが、私はプロファイルの数のために必要があります。
10バイト未満を提供するハッシュアルゴリズムが必要です。

2
PersianGulf

その質問は、ハッシュ関数の要件を理解せずに答えることは不可能です。

ただし、ここではsecurity.seを使用しているため、安全なハッシュ関数を求めていると思います。その場合、私はその答えを恐れています:それはできません。

ハッシュ関数 は単なるマッパーです。任意のサイズのデータ​​を固定長のキーに永続的にマップします。これ以上何もない。たとえば、文字列を取り、定数を返す関数は、完全に有効な(やや役に立たない場合は)ハッシュ関数です。

現在、暗号化ハッシュ関数は、追加のプロパティを持つハッシュ関数のクラスです。理想的な暗号ハッシュ関数には、次の特性があります。

  1. プレイメージ耐性があります。入力スペースでブルートフォーシングを行うよりも速く特定の出力を提供する入力を簡単に見つけることができません。
  2. これは、2番目のプリイメージ耐性があります。特定の入力が与えられると、同じ出力を与える2番目の入力を簡単に見つけることができません。
  3. 衝突に強い:多数の異なる入力があっても、同じ出力をもたらす2つのメッセージを簡単に見つけることはできません。

これは多かれ少なかれ、キースペースが入力スペースよりも小さい場合でも、キースペースが大きすぎて完全にマッピングできないという事実に依存しています。それ以外の場合は、逆マッピングテーブルを作成するのに多くの時間を費やす可能性があり、1を解除する簡単な方法があります。

そのため、10バイトのハッシュ関数に期待するプロパティを説明する必要があります。標準のセキュアハッシュ関数は、それらのセキュアプロパティを保持している間は機能しません。ただし、要件が異なる場合は使用できません。

5
Stephane

誰かがハッシュを10バイトに制限する理由は考えられませんが、本当にそうしたいのであれば、そうだと思います。

あなたができることはこの答えのようなものです: 短い文字列(タグ名)に最適な32ビットハッシュ関数は何ですか? ここで、文字列のmd5を取得し、それを10バイトまたは何バイトに切り捨てます。

正直なところ、なぜあなたがこのようなことをするのかという理由を正当化できるのでない限り、そうしないでください。割り当てられたデータスペースを、bcryptと同じ大きさのハッシュをサポートできるものに増やす方法を考え出します。安全なハッシュを生成するときのアルゴリズムは、実装するのが難しいように見えるかもしれません。

4
CryptoAllDay

ファイルまたはメッセージの整合性の計算に使用している場合は、CRC32を使用できます。または、暗号アルゴリズムを使用する傾向がある場合は、ハッシュアルゴリズムの出力の最下位バイトまたは最上位バイトを取得できます。これは、一貫して再現可能であり、ハッシュのデータに固有ですが、衝突の発生率が高くなります。

1
Whome