|
こんばんわ。ちょっとお聞きしたいことがありまして。。。 うちの掲示板はmmさん(ここにいる人かどうかはわかりませんが)が作った掲示板を使っているんですが、 crypt関数が使えなくて削除パスとかが出てこないんです。それで、サーバ管理者に連絡しましたら、 >弊社サーバーでも、crypt関数はもちろんご利用頂けます。 >ただし、サーバーの暗号処理にMD5方式を搭載しておりますので >MD5以外のサルト係数を使用したスクリプトでは、そのままでは動作致しません。 >(cryptはサーバーのライブラリに依存している為) >cryptをMD5方式のサーバーでお使いになるには、salt係数をMD5の >$1$ 固定で指定する必要がありますので、スクリプト内の >該当部分を書き換えてご利用ください。 と教えていただきました。でもどこをどう直せばいいのかさっぱりなんです。 忙しいと言っていますけどもし時間が空きましたら、教えていただけますでしょうか。お願いします。 ちなみにhttp://whitenight.org/etc/bbs/Readme/crypt.cgiにcryptを実行するCGIがあります。 ソースはhttp://whitenight.org/etc/bbs/Readme/crypt.txtにありますんで、どうかみてやってください。 長文すいませんでした。 |
|
あっ、crypt.cgi はMD5には対応してないですね(^^; MD5を使える環境にないので、詳しくは、68userさんのご助言を頂きたいのですが、 とりあえず、ソースの以下の行を削除して、 if ( $salt !~ m%^[\./0-9A-Z]{2}$%i ) { print "<H2>エラー</H2>\n"; print "SALTが不正です\n"; exit(0); } SALTの入力欄の2文字の前に「$1$」を挿入して実行してみて頂けます? |
|
まず OS 名は何ですか? >>(cryptはサーバーのライブラリに依存している為) 僕の知る限りでは (少なくとも FreeBSD では) 誤りです。 なんにも考えずに salt を渡せば、ライブラリ (libcrypt) の 方で DES でも MD5 でも勝手に処理してくれます。 # ただ、FreeBSD 以外の環境 (例えば Linux で MD5 な環境) だと、 # ライブラリがそこまで対応しているかどうかはよくわからんなぁ。 # 明日試してみよう。 しかし、http://whitenight.org/etc/bbs/Readme/crypt.cgi の 結果が $PassWord = ''; と空になるのは謎ですね。 > print crypt( $pwd, $salt ); これを print crypt( $pwd, "\$1\$$salt\$" ); とするとどうですか。あるいは print crypt('secret','ab'); だとどうなりますか。 |
|
おっと少々かぶりぎみ。 crypt.cgi は FreeBSD (MD5) 上ではうまく動きました。FreeBSD の libcrypt では crypt('secret','xx') と crypt('secret','$1$xx$hogehoge') は同じものとして扱われるからです。 ということは、智慧さんの環境ではそうではないということで しょうから、$1$..$ を追加すればいけるんじゃないかと思います。 |
|
あっ、なるほど。(最後の $ も忘れてた) 68user さんの指示に従って対処して下さい>智慧さん |
|
>mm@biglobeさん >68userさん あ、ごめんなさい。 こんなに早くお返事してもらえるとは思ってもいませんで・・・。 じゃ今から早速やってみます。 レスありがとうございました。 |