今回の新しいID制ってなんか変だから

このエントリーをはてなブックマークに追加
532心得をよく読みましょう
まとめ。
仕様では32ビット→16ビットの均質劣化を掛けることに
なっています(つまりIP全てを使う)。IPの一部分のみ取り出して
使用するのは脆弱になるか、IDがかぶる確率が高くなりすぎる
のが理由で却下されました(過去ログ参照)。
しかるに、現行のスクリプトでは、IPから上位8バイトのみ
を取り出して使用しています。
my $idnum = $ENV{'REMOTE_ADDR'};
$idnum =~ s/\./0/g;
$idnum = crypt($idnum,$idnum);
この部分はIPを32ビット全て使うように変更してください。
たとえば、
use MIME::Base64;
my $idnum = pack('C4', split(/\./, $ENV{'REMOTE_ADDR'}));
$idnum = encode_base64($idnum);