[PHP-users 18391]pack関数とMD5関数について

Tybalt of Capulet ice-man @ tomato.ne.jp
2003年 10月 10日 (金) 15:17:44 JST


神崎です。

現在、http://www.qwk.net/opensource/mod_auth_cookie_mysql/の
「mod_auth_cookie_mysql」をサーバーにインストールし、
動作確認のところでつまっております。

要はこのモジュールではクライアントに設定されたクッキー
情報を元にDBを参照し認証を行うというものです。

このクッキーがうまく作れないでいます。
マニュアルには下記のようなパターンで作りなさいと書いてあります。

IIIITTTTHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHUSERNAME

1. IIII = 4-byte IP address; used only if MatchIP option is enabled
2. TTTT = 4-byte creation time
3. HH...HH = 16-byte MD5 checksum, encoded as 32 hex digits
4. USERNAME = variable length username

私の場合1.の「IIII」のIPはオプションで付けておりませんので、
2〜4を行っております。
このモジュールにサンプルで入っていたperlのスクリプトは下記のようでした。

sub make_credential {
  my ($user, $pass) = @_;
  my $creation_time = pack "N", time();
  my $checksum = Digest::MD5->new->add($user, $creation_time, $pass);

  my $cred = join "", $ip, $creation_time, $checksum->hexdigest, $user;
}

この部分をPHPで行おうと下記のスクリプトを作ってみたのですが、
認証が通らないので正しくできてないようです。
上のPerlのスクリプトとPHPのスクリプトは同じではないのでしょうか?

$creation_time = pack("N",time());
$checksum1 = $user.$creation_time.$pass;
$checksum2 = pack("H*",md5($checksum1));

$cred = $creation_time.$checksum2.$user;

setcookie ("thecookie",$cred,time() + 86400,"/","hogehoge.com");

サーバー環境は、

Red Hat -> 7.3
PHP     -> 4.3.2
Apache  -> 1.3.27
MySQL   -> 4.0.14-Max

です。
どなたかおわかりになる方、ヘルプお願いいたします。



PHP-users メーリングリストの案内