web-dev-qa-db-ja.com

既知の平文とハッシュでソルトを計算しますか?

ハッシュを作成するためにmd5ハッシュを使用するWebアプリで使用された文字列があります。ハッシュもあります。しかし、文字列のmd5がハッシュと一致しないため、ソルトが関係していると思います。塩分を測定するのに役立つソフトウェアはありますか?

2
Neil

標準のハッシュ関数(/ etc/shadow内のUNIXパスワードなど)では、ソルトはハッシュの一部として保存されます。

保存されたハッシュ値をソルトとして渡すと、正しい結果が得られるはずです。

/ etc/shadow内のハッシュされたパスワード値は、実際には$で区切られたレコードです。たとえば、パスワード 'blarg'のハッシュは次のとおりです。

$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

$で区切られた3つのフィールドがあります。

  1. ハッシュ関数(この場合は「1」、MD5を表す)
  2. 塩(「KfcI/JTQ」)
  3. ハッシュ値(「b5VTf4i9Mnf6QFgLuVZNM0」)

Mkpasswdを数回使用すると、ハッシュが変更されます。

$ mkpasswd -m md5 blarg
$1$Gst52IWk$8ARVeSlpkcZOlyKV10Slu/

$ mkpasswd -m md5 blarg
$1$JeqRviA/$GnH/AvGnZEG9wLfJjiaAt1

ただし、上記のハッシュ値からソルト(つまり、2番目のフィールド)を渡すことで、元のハッシュと照合できます。

$ mkpasswd -m md5 -S KfcI/JTQ blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

パスワードハッシュ全体を渡すこともできます(ただし、ハッシュ関数は省略します)。

$ mkpasswd -m md5 -S KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0 blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

Linuxでは、ハッシュタイプは/etc/login.defsで制御できます。これを変更するときは十分に注意してください。システムから完全にロックアウトされる可能性があります。特に見出しMD5_CRYPT_ENABとENCRYPT_METHODを見て、マニュアルページを注意深く読むことをお勧めします。

1
bahamat