【堅牢】トリップの新方式を考えてみませんか【互換性】
■ このスレッドは過去ログ倉庫に格納されています
現段階でのトリップの問題点などを考えつつ、
現行方式よりも堅牢なトリップの方式を考えてみませんか。
マルチバイト文字問題や互換性などの問題も出てくると思いますが、
そこは皆で妙案を出し合いつつ、新たな方式を頑張って考えてみましょう。
関係スレ
幸せサーバープロジェクト 「アイデア・技術のある人募集中」★3
http://qb5.2ch.net/test/read.cgi/operate/1241361889/ 少なくとも2ch鯖でのトリップは全鯖共通にしてね。 >>244
なぁる♪
substr(sha1_base64($handle_pass), 0, 12);
先頭の#が付いたまま突っ込まれてるのかぁ♪
http://qb5.2ch.net/test/read.cgi/operate/1212767905/970 >>260
Boo2008ばぁぢょん。
sub Make_Trip{
# 仕様変更? @2009/06/16
my $key = shift;
($key) = $key =~ /^#(.+)/;
if (length $key >= 12){
if (substr($key, 0, 1) eq '$'){
# 将来の拡張用
$key = '???';
}
elsif ($key =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|){
$key = substr crypt(pack('H*', $1), "$2.."), -10;
}
else {
$key = substr sha1_base64($key), 0, 12;
}
}
else {
# 従来形式
my $salt = substr($key, , 1) . "H";
$salt =~ tr|x3A-x40x5B-x60x00-x2Dx7B-xFF|A-Ga-f.|; # 仕様変更 @2003/11/15
$key = substr crypt($key, $salt), -10;
}
return "◆$key";
}
>>261
ちょと修正。
sub Make_Trip{
# 仕様変更? @2009/06/17
my $key = shift;
my $salt;
($key) = $key =~ /^#(.+)/;
# 12文字以上ある時に新式採用
if (length $key >= 12){
if (index($key, '$', 0) == 0){
# 将来の拡張用
$key = '???';
}
# 塩付きkey
elsif (($key, $salt) = $key =~ m|^([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|){
$key = substr crypt(pack('H*', $key), "$salt.."), -10;
}
# そのままkey
else {
$key = substr sha1_base64($key), 0, 12;
# $key =~ tr/+/./;
}
}
else {
# 従来形式
$salt = substr($key, , 1) . "H";
$salt =~ tr|x3A-x40x5B-x60x00-x2Dx7B-xFF|A-Ga-f.|; # 仕様変更 @2003/11/15
$key = substr crypt($key, $salt), -10;
}
return "◆$key";
}
もすかして、、、
$key = substr sha1_base64($key), 0, 12;
先頭からだと何入れても変化無し? >>244
キー構成文字の痴漢処理が従来形式にも適応されてるのは。。。 >>263
なんだか bbs.cgi のほうはこっそり # を削ってから
sha1_base64() するようになってるみたいです。
http://dso.2ch.net/test/read.cgi/myanmar/1245105121/16
# substr(sha1_base64('また挑戦。@2ch掲示板'),0,12) → ZDzVO3Ph6oZ3
# substr(sha1_base64('#また挑戦。@2ch掲示板'),0,12) → p6iSjgdOqVeb 「痴漢処理が適応」って変か
分離する処理が従来形式にも適応されてトリップ変わっちゃうのはどうなのかな >>266
それってまずいですよね
今までの資産がいくらか電子のもずくになっちゃいます
置換処理を除外するのは新方式で、
現行方式の場合は生キーを使えるようにするって話じゃなかったかしらん? >>234
AESがインスコできなかったので
>6bitで区切れば(ry
本当は間にもう1つ入れる心算だったんですが、
何をする心算だったのかのメモをなくしたのであのままです。
>>236
>crypt()というのは、その筋の方がわくわくするロジックでは
私も自分で書いてて、そこで萎えました
---
まあ、私のは多分採用されないので(ry >>265 bbs.cgi 内部では $handle_pass というのは # を抜いたものになってます.
>>266-267 そのあたりを突き詰めると,結構難しいんですよね.
< や > の置換処理なんかはまず不変でしょうけど,例えば
$GB->{FORM}->{'FROM'} =~ s/山崎渉/fusianasan/g;
これは山崎渉事件以降追加された処理だと思いますが,
これによって完全な一貫性はすでに失われていますし,
そしてこのような NG ワードの追加は今後も起こりうることなので...... 「#山崎渉」は「#fusianasan」になってしまうのがデフォなのですか。 >>269
しかし今更だけど、コードを見ると笑えるなぁw どうにでもなるんじゃないかな?
($GB->{FORM}->{TRIP}, $GB->{FORM}->{FROM}) = $GB->{FORM}->{'FROM'} =~ /^(.+)#(#?.+)$/;
初っぱなにこうしておけば。。。
・・・って甘いのかしら? あと、、、
$key = substr sha1_base64($key), 0, 12;
$key =~ tr/+/./; ←これしちゃうのはいくないのかな? 新たなコードではトリップ部分の置換処理をスルーしていますが,
それによって(置換処理が行われていた)従来のものと一貫性が失われる
ということを >>266-267 では指摘しているのではないかと.
>>274 入れてみますか...... 過去の糞コードが足を引っ張る典型だな
作り直したい衝動に駆られるけど許されないという・・・
実際そんな仕事ばっかりやってるけどw < が &lt; に置き換わることなどを知ってれば
利用者側で対処可能です。
逆に、そこまでして残さないといけない仕様ですか?
今こそキレイにしておく箇所じゃないかと私は考えます。
2ちゃんねる文字化け対策
http://www.geocities.jp/trip_chaser/2ch_mojibake.html
2chトリップ仕様(私の書きかけ)
http://sourceforge.jp/projects/naniya/wiki/2chtrip
このへんは検索人が苦労してきた部分でもあるため、こだわりがあるんですよ… >>275
ふむふむ。逆のことかぁ。。。
それは大変ですねぇ。わははー
でも良いと思うです。10周年ですし(´ー`) tr/+/./ 入れますた.@Boo2008
トリップテスト広場になっている、、、Boo2008 書き忘れ。
置換に関する仕様変更については、
現トリップにおいては、生キー指定が実装されてれば
致命的な問題はなくなります。
しかし、
・現仕様の置換処理を残しつつ
・さらに置換文字列を追加する
ようなケースが発生しうることを鑑みると、
2chが死滅するまで禍根を残す問題となり得ます。 >>268
ついうっかりPerlにしてみました。
ttp://senji.xrea.jp/naotrip_pl.txt >>223通りに動くかどうかもわからないエンバグしてそうなもの
ttp://senji.xrea.jp/float_php.txt FreeBSD(64)とWin(32)で違うトリップが生成されて悲しくなったので
>>269
コード読み返せば # を抜いてあることぐらい気づきそうなものを、と自分で感じているところです。 なにもレスがないということは sha1_base64 でファイナルアンサー?
決定しだいトリッパーを対応させ(r SHA1の20Byte中先頭9ByteのB64って
従来式と比べて衝突増えるんだか減るんだかどうなの?
sports2はサニタイズの処理も違ったりするし、0x80問題も修正された方が
良いと思うし>>281には同意 降らぬなら降らせて見せようほととぎす。
DES っつか現行トリップについてはいろいろ詳しいが、
SHA-1 はよく知らん。
ごめんなさい、見栄はりました。
全然知らないです。(。・ω・。) 現行の10桁トリップは28京8230兆とおりの種類があり(64^9×16)、キーは1〜8byte。
SHA1を使う12桁トリップは47垓2236京6482兆とおりの種類があり(64^12)、キーは
12byte〜板の設定上限まで。
トリップのダブりに関してどーゆー計算をすればいいのかわかんないや。
出現するトリップの種類は1万6384倍多くなって、12byte未満のキーではないことが
保証される12桁トリップはなんとなくよさげに見えるす。 BBS_NAME_COUNTに依存するbyte数って事ですかいな。
しかし##757375626F6E0000suでも呪いがかかってるのねぇ、、、
tripにした時点で呪い判定してるのかぁ、恐るべし呪い。 >>292
いろいろやってみよう♪
エロエロではないです。 >>294
んだす。覚えやすくて十分に長いキーを使うようになったのに、違う板に行ったら
ハネられたという悲劇も生まれそう。てか、それはキーが永杉?
DESを使う現行方式で、キーに256種類すべてのキャラが使えるとすると(すいません、
よく知らないんです)、データの間引きによって同じトリップが出現するキーは64種類
あるのかな。
ハッシュ関数を使うと、データの間引き+コリジョンがダブりの原因になるんでしょけど、
これらがどれくらいの影響を及ぼすのかわかりませんねん灸。 もしかしてIDもおもしろい?のにとかとか。
上位4桁->host名の後ろから10文字とかocn.ne.jpのところから採取->MD5
下位4桁->IPアドレスから採取->MD5
/dev/random->MD5
+
識別子
#おまいOCNだろ!?なぁんて会話が飛び交ったり。。。
もう眠ろう。。。 BBS_NAME_COUNT は変換後の名前の長さに適用されるので,
変換前の長さには適用されません.とりあえず,
トリップキーの長さには 1024 というハードリミットを設けてあります.
まぁ,特に大きな異論がなければ,今のやつでぼちぼちいってみますかね...... >>302 12桁以上の「#$〜」形式は,今後また別のアルゴリズム等を
導入したくなった時などに利用することを想定しています.
ネタで ??? を出すだけならいいですが,本気で使うトリップに
現時点では「#$〜」形式を用いないように,という意図ですね. きっと誰かが、新トリップ方式のテンプレを作ってくれることを座して待とうw >>303
今使ってる人は、キーの一文字目を晒してしまう(のと同じ)ことになっちゃうけど
あきらめてもらいましょう、うんうん。
(置き換えりゃいいじゃんという的外れなレス禁止w) >>305 12桁未満なら「#$〜」でも従来通りなので,
わざわざ冗長なキーを使ってる人でない限り影響はないかと. >>306
なんという的確なつっこみ。
orz=3 >>303
お?とりあえずそのままいくですか。
よし、やっちまえー♪ 生キー指定以外の12桁以上「##〜」形式も将来の拡張用にしておきましょう.
で,まとめ:
if (length $handle_pass >= 12)
{
my $mark = substr($handle_pass, 0, 1);
if ($mark eq '#' || $mark eq '$')
{
if ($handle_pass =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|)
{
$GB->{TRIPSTRING} = substr(crypt(pack('H*', $1), "$2.."), -10);
}
else
{
# 将来の拡張用
$GB->{TRIPSTRING} = '???';
}
}
else
{
use Digest::SHA1 qw(sha1_base64);
$GB->{TRIPSTRING} = substr(sha1_base64($handle_pass), 0, 12);
$GB->{TRIPSTRING} =~ tr/+/./;
}
}
else
{
# 従来形式
}
・ 従来はトリップキーも含め <> や NG ワード等の置換処理が行われていたが,それをスルーするようにした.
・ キーの長さが 1024 桁を超えるとエラー. おつです。>>310
しかし ◆??? は見慣れないなぁ。
ようは「reserved」ってことなわけですが、変な単語より ??? の方がいいのかもですね。 キタ━━━━━━( ゚∀゚)y━━━━━━┛~~ !!! >>310
え?した?過去形?
・・・・・・・・・・・。
いやっほぉぉぉぉーーー! これは ◆fusianasan でもいいのかもしれない キターーー\(^o^)/
長時間の正座で立てません! キタ━━━━(゚∀゚)━━━━!!!!!
>>310
おつです >>309
ん?そのままだと#$+11桁でも???になりませんかいな?
$を含めて12桁って事? クッキーを食べてない状態で書き込むと
トリップが出なかった >>309 に基づくトリップの新仕様をまとめてみた。
これであっているかどうか、チェックよろしくです。
1. #(12文字以上) 新仕様発動、 #11文字以下 は従来通り
1) そのうえで ## #$ は特別な意味を持つ
1a)
- ##(8文字分の16進ASCIIコード) で、「ASCIIコードによる直接入力」により文字列を設定可能
- ##(8文字分の16進ASCIIコード)(0〜2桁のsalt) とすることにより、saltをも設定可能
- 上記では「従来アルゴリズム」により、10桁のトリップを生成
1b)
- #$ は将来の拡張のために予約、現在は何を指定しても ◆??? 表示
2) 上記以外の #12文字 では「新アルゴリズム」により、12桁のトリップを生成 >>321
ふむふむ、将来的に##と同じように判定があるからでしょうから問題ないですかねぇ〜
どもども♪ >>322
ちょっと直した。
1. #(12文字以上) で新仕様発動、 #(11文字以下) は従来通り
1) そのうえで ## #$ は特別な意味を持つ
1a)
- ##(8文字分の16進ASCIIコード) で、「ASCIIコードによる直接入力」により文字列を設定可能
- ##(8文字分の16進ASCIIコード)(0〜2桁のsalt) とすることにより、saltをも設定可能
- 上記では「従来アルゴリズム」により、10桁のトリップを生成
- 上記以外の ## は将来の拡張のために予約、現在は何を指定しても ◆??? 表示
1b)
- #$ は将来の拡張のために予約、現在は何を指定しても ◆??? 表示
2) 上記以外の #12文字 では「新アルゴリズム」により、12桁のトリップを生成 12文字以上になっても
やっぱりキーに2バイトの文字は使わないほうがいいのだろうか ぎゃああああああああああああああああ!!!!!!!
俺の10×kトリップがああああああああああああああ!!!!!!!!!!!!
死ね!死ね! さらに修正。
1. #(12文字以上) で新仕様発動、 #(11文字以下) は従来通り
1) そのうえで ## #$ は特別な意味を持つ
1a)
- ##(8文字分の16進ASCIIコード) で、「ASCIIコードによる直接入力」により文字列を設定可能
- ##(8文字分の16進ASCIIコード)(0〜2桁のsalt) とすることにより、saltをも設定可能
- 上記では「従来アルゴリズム」により、10桁のトリップを生成
- 上記以外の ## は将来の拡張のために予約、現在は何を指定しても ◆??? 表示
1b)
- #$ は将来の拡張のために予約、現在は何を指定しても ◆??? 表示
2) 上記以外の #12文字以上 では「新ャAルゴリズム」bノより、12桁のャgリップを生成
3) # の後は1024文字まで指定可能 あ!元の長さなら変化ない!
死ねとか言ってごめんね! 8文字キーの後ろにトリップメモっておいたのに、、まあしゃーねーか >>334
それまで使ってたトリップのキーを
半角8文字に縮めればいい
例えば
#01234567890123456789
だったら
#01234567
にすればいい で、
・1a) は「トリップジャンキー」な人向けの「神トリップ検索用仕様」
・2) は、従来のものよりもちょっぴり割られにくくなった新仕様
ということでいいのかな。 >>327 は #$ の記述がちと紛らわしいな。
これでいい気がする。
1. #(12文字以上) で新仕様発動、 #(11文字以下) は従来通り
1) そのうえで ## #$ は特別な意味を持つ
1a)
- ##(8文字分の16進ASCIIコード) で、「ASCIIコードによる直接入力」により文字列を設定可能
- ##(8文字分の16進ASCIIコード)(0〜2桁のsalt) とすることにより、saltをも設定可能
- 上記では「従来アルゴリズム」により、10桁のトリップを生成
- 上記以外の ##(11文字以上) は将来の拡張のために予約、現在は何を指定しても ◆??? 表示
1b)
- #$(11文字以上) は将来の拡張のために予約、現在は何を指定しても ◆??? 表示
2) 上記以外の #(12文字以上) では「新アルゴリズム」により、12桁のトリップを生成
3) # の後は1024文字まで指定可能 ふむ。いろいろ書いたけど >>342 でよさげかな。
そろそろ午後の本業の時間。 >>336
ちょっぴりどころじゃなく、現実問題として現時点では割られるなんてありえないぐらいでっす。
超高速な対応トリッパーもないですから。
単語をキーにしてたりとかそんなのは論外ですが。 ねえねえ株優プチどうやってだせばいいの?
頭に!kab!88-持って来ると株価表示でるし従来みたいに#酉!kab!88-でやると酉変わっちゃう。 #に続けて1〜1024文字を入力するとトリップに変換される
"#1〜11文字"で従来の10桁トリップ("##16進8桁の10進表示とsalt2桁"でも指定できる)
"#12〜1024文字"では12桁の新型トリップが発生
"##12文字以上"と"#$12文字以上"は未定義として◆???に変換
つまり
#abcd1234XYZ → 従来トリップ10桁
##DEADBEEF00 → 従来トリップ10桁
#abcd1234WXYZ → 新トリップ12桁
##hogehogehogehoge → ◆???
#$hogehogehogehoge → ◆???
これでおk? #酉!kab!88-
後方だと!kab!88-を酉の文字列としてるんでしょうねえ。 ■ このスレッドは過去ログ倉庫に格納されています