WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:/^\$1\$/ について

0:[投稿] atusi [2002/05/03 17:31 ][環境:WIN+IE UNIX系+Perl]

こんにちわ。いつもお世話になっております。
このページの解説を拝見させて頂いておりましたが、
http://www.parkcity.ne.jp/~chaichan/src/perlmain.htm#fantasyAbout
この一行の意味がわかりません。

(match_pwdルーチンの一行目です)
    if ($_[1] =~ /^\$1\$/) { $key = 3; } else { $key = 0; }

すいませんが、ご教授頂けないでしょうか?

#
#===============================
#

# フォームからの入力を暗号化
$PW = &make_pwd($FORM{'pwd'});

# 中略
#  (一旦ファイルに書き込んで、)
#  (それを認証時に再び取り出して暗号化の種として使う)

&match_pwd($FORM{'pwd'},$PW);

## --- 削除キーを暗号化
sub make_pwd {
    $times = time;
    $salt = substr($times,-2,2);
    return crypt($_[0],$salt);
}

## --- 削除キーを照合
sub match_pwd {
    if ($_[1] =~ /^\$1\$/) { $key = 3; } else { $key = 0; }
    $match = "no";
    if (crypt($_[0], substr($_[1],$key,2)) eq "$_[1]") {
        $match = "yes";
    }
}


1:[回答] + [2002/05/03 19:53 ]

>if ($_[1] =~ /^\$1\$/)
$_[1]が「$1$」で始まる文字列なら〜

本が手元に有れば簡単にわかる内容ですよ〜


2:[質問] atusi [2002/05/03 20:48 ]

+様ご返答ありがとうございます。
そうなんです。その意味はなんとかわかるのですが、

なぜその場合だけ、下のようにする必要があるのでしょうか?
substr($_[1],3,2)

普通はこうですよね?最初の2文字が暗号化の種である、という。
substr($_[1],0,2)

何度も本当にすいませんが、どうぞよろしくお願いいたします。


3:[回答] B-Cus [2002/05/03 23:33 ]

そもそも seed をわざわざ切り出す必要はないんです。$1$ でもそうでなくても、
何も考えず crypt に渡せばよいのです。

よって、Fantasy Board が余計な処理を行っているだけです。


4:[完了] atusi [2002/05/05 23:42 ]

すいません、なんだか気になってしまってました。

お手数かけて申し訳ございませんでした。
どうもありがとうございました。


5:[完了] えび [2002/05/07 12:01 ]

 というか、crypt のアルゴリズムに MD5 を使っているときに処理を分けるという話と思われます。
 crypt MD5 で検索をかけると吉かも。
 

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World