希望の9文字トリップはここだよな(12桁もOK) Part 0x0A

このエントリーをはてなブックマークに追加
313いいんちょ ◆GPPPPPPPPU
お勉強に疲れたので、>>307 について、少しマジメに考えてみた。

順を追って説明しよう(*‘ω‘ *)

まず、10桁酉では、キー8バイトのうち、2バイト目と3バイト目以外は8ビット目が無視される。

例えば、#ミ2345678 = #P2345678

これは2進数で表すと、
11010000 = ミ2345678
01010000 = P2345678
となり、"ミ"と"P"とで下位7ビットが一致するために同一のトリップとなる。

では、このこをと考慮すると検索すべきキーはどの程度になるのであろうか(*‘ω‘ *)?

つづく
314いいんちょ ◆GPPPPPPPPU :2011/04/30(土) 20:47:53.66 ID:bNPGU+fVP
(1)キーが日本語用ASCIIのみで構成される場合
入力可能な文字は 16*7+15*3=157 文字
このうち63文字がreductionの対象となり、実質的には、157-63=94 文字が入力対象となる。
ただし、2文字目と3文字目はsaltとして使われるので157文字そのまま。
このときの8文字のキーの組み合わせの数は
94^6*157^2=17004600233249344

これは1GTrip/sだと、17004600233249344/1000,000,000/60/60/24=約196日で検索が完了する。
2016年頃には実現するかもしれない100GTrips/sだと約2日。

(2)シフトJISの場合(面倒なのでsaltは無視)
1バイト目は0x81以降なので、reductionの対象とはならず、41種類。
2バイト目は、0x40〜0x7e、 0x80〜0xfc となり、実に0x40〜0x40〜0x7eのほぼ全てがreductionの対象となる。
めんどくーので、0x40〜0x40〜0x7e全てがreductionの対象ということにする(*‘ω‘ *)
すると2バイト目は、63種類。
入力対象は、41*63=2583 文字。

さて、この場合のキーの組み合わせであるが、8バイトに2バイト組を重ならないように入れる、
ただし、8バイト目には2バイトの最初のバイトのみが入ってもよい、という組み合わせになる。
このときのキーの組み合わせの数は
21108881587922289

(1), (2)より組み合わせの数の合計は、17004600233249344+21108881587922289=
38113481821171633

これは、2^58=
288230376151711744 より1桁少ない。

これは、1GTrips/sで、38113481821171633/1000000000/60/60/24=約441日、
100GTrips/sで、約4日で全てを割ることが出来る(任意のキーに対して衝突を起こすことができる)。
315いいんちょ ◆GPPPPPPPPU :2011/04/30(土) 20:51:45.05 ID:bNPGU+fVP
つまり、現状、うまくコーディングすれば、1年程度で10桁トリップを割る… というのは現実的な話しであろう。

そして、2016年頃には、そこいらのPCで1週間もかければ
10桁トリップを割ることが出来るようになっていると予想するものである(*‘ω‘ *)m9

どや(*‘ω‘ *)www