# □□□ IDの算出方法 □□□ # bbs.cgi ver 0.31 (02/04/06) を元に再現してみました。 use Digest::MD5; use Digest::MD5 qw(md5_hex); $md5 = Digest::MD5->new(); # ---IDを作成するのに必要なデータ--- # # IPアドレス $ip = '110.111.112.113'; # BBSキー $bbs = 'newsplus'; # 日にち (03/01/26 22:13 -> 26) $day = 26; # /dev/randomを開き、先頭から16バイト読み出したランダムな値。 # /dev/randomを使わない設定の場合は、ランダムな数字(16桁)。 # 日付が変わると更新される。日付が同じなら再利用される。 # サーバをクラックしない限り、値は分かりません。 $rand = 1385643578654298; # ---------------------------------- # # IPアドレスからMD5を算出する。(16進数形式) # 返ってきた文字列の"後ろから4バイト"を求める $ipmd5 = substr(md5_hex($ip),-4); # メッセージを作成する $md5 -> add($ipmd5); $md5 -> add($bbs); $md5 -> add($day); $md5 -> add($rand); # メッセージからMD5を算出する。(base64enc形式) # 返ってきた文字列の先頭から8文字がIDになります。 $id = substr($md5->b64digest,0,8); print "ID:$id";