この形式の違いは何ですか:
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
以下:
5f4dcc3b5aa765d61d8327deb882cf99
また、
最初のハッシュ形式を2番目のハッシュ形式に変換する方法
ありがとうございます
コメント
回答
最初の例はシャドウファイルフォームのように見えますで: ID (admin
)アルゴリズム(1
= MD5)塩(なし)ハッシュ(oLN1UCc1Y3T30QkMcKMSx0
)、 Base64形式のように見えるハッシュを使用します。
2番目(5f4dcc3b5aa765d61d8327deb882cf99
)は、MD5ハッシュと一致する128ビットの16進文字列のようです。
ただし、両方をバイナリ&に変換してから反対の形式に戻すと、2つのハッシュが一致しません。
-
ハッシュ文字列(
5f4dcc3b5aa765d61d8327deb882cf99
)で表されるバイナリ値のBase64はX03MO1qnZdYdgyfeuILPmQ
です。 -
逆に、base64ハッシュの16進文字列(
oLN1UCc1Y3T30QkMcKMSx0
)はa0b3755027356374f7d1090c70a312c7
です。------- Edit -----
As user1686 は、次のように指摘しています。 oLN1UCc1Y3T30QkMcKMSx0 はMD5cryptであり、MD5の1000ラウンドであり、各ラウンドに追加があります。 これらのハッシュが両方とも実際に同じパスワードからのものである場合、ストレートMD5ハッシュを同等のものに変換できるはずです。 MD5Cryptの最初のMD5計算をバイパスし、パスワードの代わりにハッシュをフィードすることにより、MD5Cryptを無塩にします。
回答
最後の$の後の部分はbase64でエンコードされます。これは、バイナリデータを一般的な印刷可能な文字(ASCII制御コードや上位ビットを必要とするものではない)として表すためのかなりコンパクトな方法です(4文字が3バイトになります)。 2番目のハッシュは単純に16進数でエンコードされているため、効率は低くなりますが(4文字が2バイトになります)、特にプログラマー(常に16進数を使用する)にとっては読みやすくなります。
編集:さらに、最初のハッシュアルゴリズムはほぼ確実にmd5 crypt です。これは、いくつかの追加作業が行われた反復MD5です。したがって、特定の入力に対してベースMD5と同じ出力を生成することはありません。実際、そうではないことがわかります。その後の最後の$を16進数に変換すると、a0b3755027356374f7d1090c70a312c7が出力されます。少なくとも部分的には)md5cryptがカスタムbase64を使用していると思うためです。これは、通常のbase64と同じ文字の順序が異なります。
最初のハッシュは、/ etc / shadowパスワード形式の例です。 $1
はMD5cryptを意味し、次の2つの$文字の間に何もないということは無塩であることを意味します。 2番目のそのような情報はありません。ソルト化されるか、異なるパスワード、異なるハッシュアルゴリズム、またはその両方である可能性があります。ただし、md5cryptよりも裸のMD5である可能性が高いです。
MD5とmd5cryptの違いを反映するように編集されています
コメント
- 'が無塩であっても、$ 1 $はMD5だけではありません-' ■ md5crypt 。これには、他の調味料を追加した1000ラウンドのMD5が含まれます。
- 2番目のハッシュはmd5(' password ')。
echo -n 'password' | md5sum
は5f4dcc3b5aa765d61d8327deb882cf99
liを生成します>
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
。同様のケースもここで見つかりましたリンク