0

2^4そのため、3 つのランダムな素数 (2^8 未満)のセットのハッシュを計算するコードに取り組んでいます。{c1, c2, c3}次に、前のハッシュの 1 つ (素数) と一致するハッシュ値を持つのセットが存在するまで、3 つの合成数 (2^8 未満) のセットを選択し続けます。そのセットは として知られてい{p1,p2,p3}ます。

私の理解では、誕生日攻撃は基本的に同じ結果をもたらす 2 つの関数を見つけることです。だから私は2つの関数を作成しますか? 1 つは素数用で、もう 1 つは合成用ですか? これを行う最善の方法は何ですか?言語としてPHPを考えています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

前提は、同じハッシュ関数を使用して 3 つの素数のセットと同じハッシュ値を生成する < 2^8 の 3 つの数値のセットを探していると思います。

ハッシュ値の範囲は記載されていません。

誕生日攻撃は、ハッシュ値の範囲が限られているため、3 つの数値 < 2^8 のすべての組み合わせをハッシュ化しようとするブルート フォース法は、実際にすべてを試す前に、有効なハッシュ値との衝突を引き起こす可能性が高いという事実に基づいています。可能な組み合わせ。ただし、この場合、3 つの数値 < 2^8 のすべての組み合わせを試しても 16777216 ループしかかからないため、完全なブルート フォース アプローチを使用できます。

このプログラムは、考えられるすべてのハッシュ値のヒストグラムを作成できます。2^8 未満の素数は 54 個しかないため、すべての有効な入力 (3 個の素数) のヒストグラムを生成するには、54^3 = 157464 ループかかります。

2^8 未満の 3 つの数値のすべてのセットを使用して衝突をチェックすると、2^24 = 16777216 ループかかりますが、ハッシュ アルゴリズムによっては、それほど長くはかからないはずです。

于 2015-11-20T08:35:11.243 に答える