総当たり攻撃をしたくなりました。
何通りを求める方法
何通りを求める方法は知らないとあれこれ考えるのですが、ちゃんとした求め方があるようで、それを知っておくだけで簡単に「何通り」かを求めることができます。
たとえば「0~9」の数字が3桁あるとしたら、10の3乗をすればいいそうです。「10 * 10 * 10 = 1000」で1000通りの組み合わせがあるそうです。こちらは「1~9」ではなく「0~9」ですので10文字あるわけですね。
こう考えると 100円均一にうっているかもしれないチャリの鍵とかは 1000回根気よく やっていけばいつかはあくということですね。
解読時間の目安もネットに公開されている
既出というかグーグルで検索して1ページ目に表示される情報によると、26文字の4桁であってもコンピューターにやらせば「3秒」しかかからないそうです。
26文字の4桁だと 45万通り の組み合わせです。45万通りあっても解読に3秒しかかからないらしいです。
def squared(num, square): new_n = num nums = [] for i in range(1, square): nums.append(num) for n in nums: new_n *= n print(new_n) squared(26, 4)
ところが
上の結果をみて驚きましたが、26文字が10桁になると、解読に32年くらいかかるそうです。「141167095653376」通りの組み合わせのようです。
この時点で総当たり攻撃のやる気をなくしました。実際には記号や大文字などが含まれますので60文字と10桁以上となるとコンピューターであっても解読に何十万年とかかることになるそうです。
ここで終わりでもよかったがさらに妄想を膨らませてみる
中国人だか韓国人だかよくわかりませんが、たまに100台くらいのスマホを動かしているのを目にしたことが「ある気がします」。それでなにに使うかはわかりませんが、1台のコンピューターで解読できる時間が10万年だったとして、単純に100で
わってみると1000年。
なんだかばかばかしくなってきたのでここでやめ。
コメント