0

htpasswd -m -c file adminパスワードを使用してパスワードファイルを生成するとadmin、結果は次のようになります。

cat file  
admin:$apr1$V.aqW878$JCj8ivmSnFp3BnTCtLAuN.

node.js を使用してそれに対して認証しようとすると、結果はかなり異なります。

Digest Hex: 21232f297a57a5a743894a0e4a801fc3

この既存の StackOverflow ソリューションに従ってみました:

new Buffer('21232f297a57a5a743894a0e4a801fc3').toString('base64');
MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM=

したがって、結果はまだ間違っていました。

ダイジェストをbase64結果に変更すると、次のようになります。

ISMvKXpXpadDiUoOSoAfww==

私の問題の要点は、同じハッシュが得られず、助けが必要なことです。アドバイスをいただければ幸いです。

ローマさんありがとう

4

1 に答える 1

1

了解しました。答えが見つかりました。htpasswdは、パスワード文字列の中央ビットに格納されている「salt」を使用します。

$apr1$V.aqW878$JCj8ivmSnFp3BnTCtLAuN.
Salt: V.aqW878

node-passモジュールは私に正しい手がかりを与えてくれました。を参照してくださいvalidate_md5。ネイティブのopensslコマンドを使用して、ソルトされたMD5ハッシュを生成します。

振り返ってみると、MD5はもはや安全ではないため、これは理にかなっています。それが私が何年もそれを使用せず、ここで少し軌道から外れた理由です。本質的に、マークされたものはすべて$apr1$このように扱われます。

于 2013-03-15T07:52:01.343 に答える