3

SHA(-1-2-3) は、出力と同じ長さの入力に対する 1 対 1 の関数ですか?

具体的な例として質問を言い換えると、SHA-1 には 160 バイトの出力があるので、すべての 160 バイトの入力には固有の 160 バイトの出力がありますか? 答えは、SHA-2 と 3、および利用可能なすべての出力サイズで同じですか?

4

2 に答える 2

5

誰もそれを証明したり、その範囲で可能なすべての入力をテストしたりしていないため、誰も知りません. それは単純な真実です。

関数が真にランダムに動作する場合、誕生日のパラドックスにより、答えはほぼ確実に「いいえ」になります.160ビットの出力の場合、平均して、任意のペア間の衝突を見つけるには2 ^ 80入力をテストする必要があります。

于 2013-02-07T01:09:24.790 に答える
3

簡単な答え:決定的な答えはありませんが、より安全な方法は(質問を拡張して、SHAファミリーのすべての機能をカバーする場合)、「いいえ」と言うことだと思います。もう少し数学的にしましょう。

SHAファミリー関数の1つを選んで調べてみましょう。nビットの出力を返し、「ランダムオラクル」のように動作すると仮定します(そうではありませんが、仮定します)。つまり、常に同じ出力を返すという制限付きの入力に対して、ランダムなnビット値を返します。同じ入力に対して。

これらの仮定では、同じではない2つの入力文字列の衝突の確率は2 ^(-n)である必要があります。誕生日のパラドックスのため、約2 ^(n / 2)個の異なる入力の後に衝突が見つかると予想されます。

したがって、誕生日のパラドックスのために、nビット入力をハッシュしてnビット出力を生成するときに関数が1対1になる可能性は高くありません。

最終的に、あなたの質問に最終的に答える唯一の方法は、すべての可能なnビットSHA関数ですべての可能なnビット入力試すことです。あなたの生涯で決定的な答えを得ることを期待しないでください...

于 2013-02-07T01:02:09.330 に答える