パスワードの長さは10文字以上は常識!?
http://d.hatena.ne.jp/ryoko_komachi/20060409/1144591046
より。
考えさせられることがあったのでいろいろ検索していたら
http://www.kimura-kouichi.com/literacy/security/password3.html
を発見。
パスワードの組み合わせ問題って高校数学レベルだよね・・・
いや、実は、その手の問題は苦手分野なのさ・・・
で、復習復習。
http://yosshy.sansu.org/P&C.htm
なーる。引用させていただくと
一般にn個の区別できるものの中から、r個を取り出して1列に並べることを
n個のものからr個とった順列
といい、その並べ方を nPr で表します。
nPr=n×(n−1)×(n−2)×・・・×(n−r+1)
です。または、階乗の記号!(nの階乗: n!=1×2×3×・・・×n)を使うと
nPr=n!/(n−r)!
とも書けます。
なーる o(*^▽^*)o~♪
でも、あれ?
パスワードの組み合わせ数ってドウ求めるんだろう・・・
なんか分からないので・・・
http://www.forest.impress.co.jp/article/2005/12/14/ninjututaikai.html
なる物を発見。とりあえず、これにかけて時間を測定して見るのもいいかも。
このソフトを使うと、クラッカーが本気になればパスワードは10文字でも足りないと言うことが良く分かる。
ちょっと考え中・・・
追記:hoshu氏(http://mainte.mine.nu/~hoshu/diary/)
よりコメントをいただきまして
n種類の文字を用いてmの長さの文字列を作るとすると、nのm乗 通りになるかと思います。
そうでした!!!おrz!!!!プログラミングなんてしてないで高校生をマジメにやっておけば良かった。
つまりpow()ですね。
今マイブーム言語のRubyで書かせていただきますと
って感じですかね・・・
def pow(n,m)
t = n
if m<=0
return 1
end
m = m -1
for i in 1..m
t *= n
end
return t
enddef password_print(count)
n = 36
for i in 1..count
m = i
t = pow(n,m)
printf("%s : %s\n",i,t)
end
endpassword_print( 20 )
ついでに1文字を36種類のなかの文字から決められるパスワードの場合の試行回数は
って感じです。
1 : 36
2 : 1296
3 : 46656
4 : 1679616
5 : 60466176
6 : 2176782336
7 : 78364164096
8 : 2821109907456
9 : 101559956668416
10 : 3656158440062976
11 : 131621703842267136
12 : 4738381338321616896
13 : 170581728179578208256
14 : 6140942214464815497216
15 : 221073919720733357899776
16 : 7958661109946400884391936
17 : 286511799958070431838109696
18 : 10314424798490535546171949056
19 : 371319292745659279662190166016
20 : 13367494538843734067838845976576
なーる。(-∧-;)