「IDをスレッド毎に生成」の編集履歴(バックアップ)一覧に戻る

IDをスレッド毎に生成 - (2006/12/02 (土) 03:42:08) のソース

**Q. IDを板毎ではなくスレッド毎に生成することはできますか?(2006-02-27版)


**A. お好きな方法で。

**■ 1つ目の案
HOST+日にち+板アカウントで生成してるんじゃなかったっけ。
まぁスレッドごとにID生成したいなら生成の時にスレッドキーも放り込んでやればいいんじゃないかな。
スレッドキーからsaltを作成して、一回余計にcryptかける。
やってることは単純だが、実装するとなるとめんどい。

galadriel.pl
sub MakeID 内
>my ($server,$column) = @_;
>↓
>my ($server,$column,$key) = @_;
>
>$ret = substr(crypt(crypt($str,$times[5]),$times[3]+31),$column);
>↓
>my @slt = ('.','/','0'..'9','A'..'Z','a'..'z');
>my $saltbykey = $slt[$key & 63] . $slt[($key & 4095) >> 6];
>$ret = >substr(crypt(crypt(crypt($str,$times[5]),$times[3]+31),$saltbykey),$column);

vara.pl
137行目あたり
>$id = $oConv->MakeID($oSys->Get('SERVER'),8);
>↓
>$id = $oConv->MakeID($oSys->Get('SERVER'),8,$oSys->Get('KEY'));



**■ 2つ目の案
galadriel.plはいじらずに、
vara.pl 
137行目あたり
>$id = $oConv->MakeID($oSys->Get('SERVER'),8);
>↓
>$id = $oConv->MakeID(substr($oSys->Get('KEY'), -8),8);
だけで実質的に十分な感じ。



.
目安箱バナー