「再帰的」ハッシュアルゴリズムは存在しますか?


11

理論的または実用的なハッシュアルゴリズムのクラスはありますか。そのクラスのアルゴリズムは、以下に示す定義に従って「再帰的」と見なされます。

  • hash1 = algo1( "入力テキスト1")
  • hash1 = algo1( "入力テキスト1" + hash1)

+演算子は、アルゴリズム(algo1)がまったく同じ結果を生成するように、出力(hash1)を結合して入力(「input text 1」)に戻す連結またはその他の指定された操作です。すなわち、入力と入力+出力の衝突。+演算子は両方の入力全体を結合する必要があり、アルゴは入力の一部を破棄しない場合があります。

アルゴリズムは、出力で高いエントロピーを生成する必要があります。出力を1つまたは両方の可能な入力に戻すのは暗号的に難しいかもしれませんが、そうする必要はありません。

私は数学者ではありませんが、良い答えには、このようなクラスのアルゴリズムが存在できない理由の証明が含まれる場合があります。ただし、これは抽象的な質問ではありません。システムにこのようなアルゴリズムが存在する場合、そのアルゴリズムを使用することに本当に興味があります。

これは、https://stackoverflow.com/questions/4823680/reflexive-hashに最初に投稿された質問の複製です



2
すべての入力テキストまたは1つの入力テキストを保持するこのプロパティに興味がありますか?すべての入力テキストに対して保持する場合、衝突の構築は設計上簡単なため、適切なハッシュ関数と見なすことはできません。
ピーターテイラー

誰かが自分のハッシュを含むファイルをハッシュしたい!;)
ラファエル

@Peter Taylor-任意の入力テキストについて説明されているように機能する関数を探しています。異なる入力ごとにハッシュが生成され、一般に、他のすべての可能な入力に対して高い相互エントロピーがあります。良い不可逆ハッシュ関数が機能するのと同じくらいです。ただし、私が探しているハッシュ関数には、不可逆性のプロパティは必要ありません。高いエントロピーで十分です。

@Raphael-うん、それは簡潔な言い方です。

回答:


9

要件を満たした些細な構造を与えます。「再帰的」ハッシュ関数の存在に答えるためだけに提供しています。

ましょ生産する任意のハッシュ関数であっても、高エントロピーの出力では。任意の長さのバイナリ文字列をビットのバイナリ文字列にハッシュすると仮定しますは任意の正の整数です。してみましょう示す連結演算子を、としましょうバイナリ文字列長さを示します。GGkk+|x|x

入力ハッシュ関数を次のように定義します。Hx

  1. 場合 、次に。|x|kH(x)=defG(x)
  2. 場合 、聞かせて及びであるビットのプレフィックスとビット接尾辞のはそれぞれ、。つまり、およびです。もし(計算される再帰的に)、次いで、。それ以外の場合、。|x|>kLR(|x|k)kxx=L+R|R|=kR=H(L)H(L)H(x)=defRH(x)=defG(x)

私が言ったように、これは簡単な構造です。実用的な(MD5、SHA-1など)または理論的なハッシュ関数に適用できます。


エンコーディングの領域にはあまり自信がありませんが、まだ高いエントロピーを持っていますか?構造上、確かに以前と同じ倍の数の文字列に対して同じハッシュを持っています。そして、彼らはお互いに非常に近いペアで来ます。(ああ、それは2の2行目のでなければなりません。)H|R|=k
ラファエル

@Raphael:タイプミスを指摘していただきありがとうございます(修正済み)。Hは、R = G(L)の条件でない限り、Gと同じエントロピーを持ちます。要件により、この条件では、H(x)はRに等しくなければなりません。ここではエントロピーを増やすために何もできません。「反射性」の要件により、出力を変更できないためです。
MS Dousti

@Sadeq:ハッシュ関数を再帰的に計算する必要がありますか?私はアルゴリズムが何らかの形でこの事実の恩恵を受けていますか?
ヤッセルソブデル

@Yasser:質問履歴を見ると、私の最初の返信は再帰を必要としなかったことがわかります。:しかし、前者の答えのような何かを計算した場合の正しくありませんでしたであるべきの定義では。H M H(M+H(M)+H(M)++H(M))H(M)
MS Dousti

Sadeq、ありがとう。私は、これは信じていることがあり、それが頼まれたとして、私の質問に答えます。適切な警告で答えを提示しました。実用的な観点からは、SHA-1などのよく知られたアルゴリズムのオーバーレイであるという事実が気に入っています。正しく理解していれば、アルゴリズムは必要な衝突に達するまでハッシュを再帰的に計算し続け、その後停止します。その場合、おそらくこれを素朴な解決策としてダビングできます。私の関心は、埋め込みアルゴリズム(SHA-1と言う)は、最終的に必要な衝突ハッシュをヒットすることを暗黙の前提があるように思われ、与えられた
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.