パスワードの作り方について先日書きましたが ⇒堅牢で憶えやすいパスワードの作り方 パスワードが作るのがどうしても苦手、と言う人もいるようです。 頻繁にインターネットを介して客先をファイルのやりとりをするような事が多いと思いますが、情報漏えいを防ぐため、パスワードをかけて圧縮している人は多いと思います。 そうなると、何百・何千というパスワードをその都度考えなければならず、パスワードを考えるのが苦手な人にはかなり苦痛なようです。 パスワードを自動生成してくれる方法はないか?という要望があり、検索してみたところ、パスワード自動生成のためのソフトはたくさんあるようです。 例⇒ PasswordCreator なるほど、ネットサービスのシステム管理者などは、新規ユーザーに仮パスワードをその都度与える必要があるのですね。 しかし、人が作ったソフトはセキュリティ的に怖いと言われまして。 まぁ確かに、バックドアが仕掛けられていないとは限りませんからね。 (そういうところは変にセキュリティ意識が高いと言う人が居る謎。。。) なので、エクセルで作れないか、調べてみました。
やってみれば意外と簡単。 手順は
- 使う文字種(文字列)を用意
- 乱数の発生
- 文字列から、乱数n番目の文字を抜き出す
- パスワードの桁数分繰り返す
1.まず使う文字をすべて記述した文字列を用意
アルファベット小文字なら abcdefghijklmnopqrstuvwxyz アルファベット大文字 ABDEFGHIJKLMNOPQRSTUVWXYZ 数字 0123456789 記号 !"#$%&'()=~`{}*+<>?_\/.,]:;@[\^- これらを全部合わせて
abcdefghijklmnopqrstuvwxyzABDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&'()=~`{}*+<>?_\/.,]:;@[\^-
2.乱数の発生
エクセルでは =RAND() で乱数が得られます。 ただし、0~1の間の小数点以下の数値となるので、以下の計算で整数値を出す =RAND() * ( 最大値 - 最小値 ) + 最小値 というか、上記で用意した文字列は93文字なので、単純に =RAND()*92+1 でよいですね。(ゼロになるのを防ぐため、1を足している。) 小数点以下はいらないのでROUND関数で切り捨て =ROUND(RAND()*92+1,0)
3.乱数n番目の文字を抜き出す
MID関数を使って上記の式で得られた数n番目の文字列を抜き出します =MID( [ 種文字列 ] , ROUND(RAND()*92+1,0),1)
これを欲しいパスワードの桁数分繰り返し、合体させればOKですね。 ということで作ってみました。 見てみたい方はどうぞ→password_creat.xls 「種文字を入力→」の右のセルに文字列を入力 「ほしい桁数→」の右のセルにほしい桁数を入力(20桁まで) すると 「パスワード」の右のセルにパスワードが表示されます lenb関数を使用して種文字の文字数をカウントさせたので、種文字は93文字でなくても何文字でも可。 =MID( [ 種文字列 ] , ROUND(RAND()*(LENB( [ 種文字列 ] )-1)+1,0),1) 1文字しか入れなければ1文字の繰り返しのパスワードにしかなりませんw 生成したパスワードをマクロを使って別シートに記録していく事もそれほど難しくはありませんが、記事に書くのが面倒になったので以下略(笑) (そのうち書くかも。) ⇒書いた
コメント