作者: davi
日時: 2006/3/21(18:56)
みなさん  <  こん??は でび です

ちっと助けてください。

レンタルサーバを変更しようと思って試用中です。
そこのサーバでは、Basic認証がDESじゃなくって
MD5というもののようです。

試用中のサーバでお仕着せのシステムが出す出力を見る
感じだと、MD5のバイナリ出力をBase64でエンコード
した22文字の文字列になっています。

UserName:$1$hoge$xxxxxxxxxxxxxxxxxxxxxx
(xは22文字)

DESの場合はWeb上にいくらでも暗号化をしてくれるよう
なcgiが設置されていますが、MD5については、それほど
多くありません。

それなら、そのお仕着せシステムを使えば?って話に
なるんでしょうが、ルートの.htaccessが上書きされる
とか色々事情があって、別の方法を探しています。

Web上で見かけたJava(VMの方)や、ベクターのフリー
ウェアではMD5対応とされていても、22文字版ではなく、
16進のダイジェストを32文字で出力するものばかりです。

その32文字を改めてBase64にエンコードしても、当然、
何の意味もありません。

Win用Apache2.0のhtpasswd.exe(単体で落としてきた)だと、
22文字出力ができることは確認しましたが、(これ単体では)
SALTの指定はできないっぽい。

htpasswd.exeの結果が、試用中のサーバが吐き出す結果と
一致しないところから見ると、SALTの指定をしないとダメ
なんだろうな、という風に考えています。
(それともこの考えが間違っているのでしょうか?)

そのほかにPerlのDigest::MD5というのを見つけたんですが、
http://perldoc.jp/docs/modules/Digest-MD5-2.20/MD5.pod
を読んだ限りだと(まだ試していません)これもSALTの指定
はできないっぽい。

ここまで書けるようになるまでで2日ほど要しました。
暗号化技術についての勉強にはなりましたが、元々の
問題は解決していません。

一番めんどくさくない方法(CygwinやWin用Apacheの
標準コマンドの組み合わせでできるならそれにこした
ことはない)で、MD5にSALTを与えたバイナリ出力を
Base64でエンコードした22文字の文字列を取得する
方法って、どんな方法がありますか?

ちなみに先日、HDDを飛ばしたばかりなので、まだCygwinも
ActivePerlも入れてませんが、必要なら当然入れます。

でび  http://homepage1.nifty.com/davi/