したらばのトリップ生成規則は2ちゃんねると一部非互換であり、トリップキーによっては2ちゃんねると違うトリップが出てしまいます。
どんな文字があると化けるかというのはぐぐればある程度出てきましたが、じゃあどんな生成規則なのかについてはいまいちヒットしませんでした。
じゃあ、ないなら調べてしまえということで、したらばのトリップ生成規則についてちまちま調べてみましたのでメモとして残しておきます。
※注意:ここに書いてある内容に付いての正確性は一切保証しません。
したらばのトリップ生成は以下のようになっていると推測できます。
#!/usr/local/bin/perl use Jcode; $key=",aaaa"; #トリップキー(#の右側) $enc=$key; $enc=~s/&/&amp/g; $enc=~s/\</&lt;/g; $enc=~s/\>/&gt;/g; $enc=~s/\"/&quot;/g; $enc=Jcode->new($enc)->sjis; $enc=~s/\,/\x81\x97\x81\x4d/g; $salt=substr($enc."H.", 1, 2); $salt=~s/[^0-9A-Za-z_]/./g; $trip=substr(crypt($enc, $salt), -8); print "$trip\n"; # 計算されたトリップ
トリップキーの一部の文字を置換してからsaltを取り出し、トリップ計算を行なっています。
また、したらばは文字コードがEUC-JPであり、ShiftJISの2ちゃんねると同じバイト列を得るためにはあらかじめ文字コードを変換する必要があります。
トリップキーの2文字目と3文字目からsaltを取り出したり、crypt()の結果の後ろから8文字(現在の2ちゃんねるでは10文字)取り出す処理は2ちゃんねると同じです。
したらばでは以下の5文字を置換してからsaltの取り出し、トリップの計算を行っています。
saltに"_"(アンダースコア)が入った場合、cryptの実装の違いにより計算結果が異なったり、アンダースコアを6文字以上並べるとcryptが空文字列を返したりします。
したらばのサーバはこの実装に含まれますので、違う実装のマシンで計算したトリップがしたらばと異なったりします。
またしたらばでは、トリップキーにアンダースコアを6文字以上入れるとトリップが空で表示されます。