web-dev-qa-db-ja.com

入力と出力のみを知っていることに基づいて、使用されるエンコード/ハッシュ方法を決定しますか?

文字列の初期値と結果のハッシュがわかっているが、出力を生成するシステムにアクセスできない場合、ハッシュアルゴリズムを再現できるように、実際に何が発生したかを判断するにはどうすればよいですか?

例を挙げてみましょう、私はそのようなリストを持っているとしましょう:

_Nathan    b01f1c8a5cc02855a2fc19ffc0da421b
password  0b8b946432f1ac91f0b07bd5f8df6587
string    c741dd70bca16058ca3f62b2ee926ec6
_

これを取得するために取った手順はMD5(Base64("string"))でしたが、上記のデータのみに基づいてそれを判断する方法はありますか?元の文字列で一般的なハッシュ/エンコードシーケンスの束を試してみて、一致する出力に遭遇することを望んでいるだけでなく、多くの入力文字列と出力ハッシュがある場合、それは分析に何らかの方法で役立ちますか?

4
Nathan

元の文字列に対して一般的なハッシュ/エンコードシーケンスの束を試して、一致する出力を見つけようとする以外に、上記のデータのみに基づいてそれを判断する方法はありますか?

いいえ、他に方法はありません。時々、長さを知ることからヒントを得ます(MD5ハッシュはSHA-256より短いなど)が、それでもまだ何も約束されていません。

7
Jeff Ferland

ネイサン-ここであなたを助けるツールはありません。それが可能性のある短い固定されたアルゴリズムのセットからのものであることがわかっている場合、ハッシュは通常ソルトを使用するため、これは不可能です。

優れたハッシュアルゴリズムとソルトの組み合わせは、特定の入力に対して任意の出力を持つことができることを意味します(時折の長さの違いを除く)

2
Rory Alsop