■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
【スレッド】2ch型掲示板 その10【フロート型】
- 388 :nobodyさん :03/07/05 01:04 ID:???
- >>375
スレ違いと怒られそうだけどちょこっと(w
DES の場合、先の URI にも述べられていますが、キーとなる文字列の文字数が 8 文字以上だと、
変化しませんので、$host の文字数が 8 文字以下である必要があります。
もしも $host が "***.***.***.***" の形式だと、最大で 15 文字になりますよね。
まずはそこを工夫すると良いかと。
(例えば、前 2 つの部分と後の 2 つの部分に分けて"."を削除して足し算にするとか -> 最大で 7 桁になるはず。)
あと「塩」と呼ばれている部分も、DES だと 2 文字しか有効となりませんのでここもひと工夫がいります。
> $kiji_id = substr($kiji_id,1,8);
出力された文字列の先頭から 1 番目から 8 番目を採取していますが、DES の場合で先頭の 2 文字はいわゆる「塩」そのものが含まれていますので、隠しておくと良いかもです。
(おそらく "aa" で始まっているかと思います。)
ということで恥ずかしながらも参照程度ということで凡例。
# IP がドットノーテーションで入っているとして・・・
$host = $ENV{'REMOTE_HOST'};
# それぞれの数字を取り出して、3 桁に揃えて 1 つ目 2 つ目と結合、3 つ目 4 つ目と結合。
# それぞれを加算して、7 桁になるように 0 を埋めて揃えておく。
$host =~ s/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/sprintf("%07d",sprintf("%03d%03d","$1$2") + sprintf("%03d%03d","$3$4"))/e;
# 8 桁にしたいので、なんか取り付けておく(w
$host .= chr($host%26 + 65); # $hostを26で割ったときの余り(剰余)をアルファベットの A-Z にして末尾に貼付ける。
# お塩の生成。製塩か?(w
$salt = sprintf("%02d",(localtime)[3]); # 現在の日付にしてみる。0 で埋めて 2 桁に。
# 早速 ID にしてみる。
print sprintf("ID :%s",substr(crypt($host,$salt),-8)); # 暗号化した文字列の末尾から 8 文字分を抜き取って表示。
# おしまい。
極々簡単な例ですが色々と工夫が出きると思いますので色々といじってみてくださいです。(全角文字で出力とか色々)
167KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30