2017-03-15 12 views
2

データを暗号化し、SHA-1またはSHA-2を使用していることを知る必要があるプログラマがあります。残念ながら、唯一のヒントはハッシュ値を持つテーブルです。 誰かが2つの暗号化タイプをどのように区別して、どちらを使用するかを教えてください。SHA-1とSHA-2を区別する

答えて

2

データを暗号化し、SHA-1またはSHA-2を使用していることを知る必要があるプログラマがあります。

あなたがデータをハッシュしているということですか? SHAは暗号化アルゴリズムではなく、ハッシュアルゴリズムのファミリです。

主な区別は、長さです。 SHA-1は160ビット(20バイト)です。 SHA-2は、224〜512ビット(28〜64バイト)の形式で提供されます。 SHA-2のいくつかの切り詰められたバージョンがあるので、どれが使用されているかを正確に特定するのは難しいかもしれませんが、SHA-1よりも長くなっています。

0

おそらく暗号化されていないハッシュを意味します。暗号化は可逆であり、ハッシュはそうではなく、暗号化はランダム関数のようにしようとするハッシュとは対照的にランダム置換のようなものです。 SHA-1は160ビット(20バイト)ですが、SHA-2は224-512ビットの長さ(28〜32バイト)のファミリです。 16進符号化またはbase64符号化を使用すると、エンコードされた文字あたり4または6ビットが得られます。 場合によっては(パスワードハッシュなど)、ハッシュに接頭辞をつけて作成した方法に関する情報があり、ハッシュ文字列には、何を見ているかを示す$ 1 $などの特殊な接頭辞が付いてくることがあります。

余分な接頭辞を持たず、同じ長さに切り捨てられたデータを持っていて、ハッシングの前に入力について何も知らないのであれば、実用的な方法で2つを識別できるとは思いません。 SHA-1とトランケートされたSHA-2の違いを伝える能力は、それらのうちの少なくとも1つが安全な暗号機能を必要としないランダムなデータから分離できることを意味します。 私は実際に区別できる攻撃を知らない。

計算の複雑さにかかわらず、ほとんどのハッシュは他の関数からもプリイメージを持っているので、単一のハッシュがどこから来たのかを知ることはできません。

関連する問題