新しいシステムを導入した時とかに、英数記号混じりのランダムなパスワードを複数作りたい場面に度々遭遇するかと思います。
※滅多にない?
それなりのフリーウェアとかを使って生成しても良いと思いますが、会社使用とかだと端末の運用ルール上、フリーウェアを入れられないなんて事もあるかと。
そんなときは、Microsoft ExcelとかGoogleスプレッドシートを使って、比較的に簡単に実現できるんじゃないかと思いました。
そんな手順を書いてみようかと。
まず、セルA1に作りたいパスワードに使える(使う)文字を入力します。
使える文字ですので、システムによっては受け付けない記号を除いたり、「I」とか「O]とか人が見間違える文字は入れないという配慮をしておくと良いです。
※画像の例では考慮していませんが…
次に、セルB1にセルA1に入力されている文字列の数を入れます。表計算ソフトを使っているのでいちいち数えずにLEN関数を使います。
ここで得られるセルB1の結果は86文字です。なお、入力文字数が必要なのは後に出てくる関数で使用する為です。
そして、ここからが本番。パスワードの生成です。先ずは一番シンプルな1文字の生成から。
セルA1に
=MID($A$1,(RANDBETWEEN(1,$B$1)),1)
と入力します。
MID関数は、文字列の指定した位置から、指定された文字数を返す関数。そしてRANDBETWEEN関数は指定した範囲のランダムな数値を返す関数。この例の場合だと、RANDBETWEEN関数によって返ってきた数値(1~$B$1の整数)を使い、$A$1のセルの文字列の中からMID関数で指定の位置の文字から、1文字を抽出してくれるという内容です。
つまり、セルA1に入力した文字列の中から、ランダムな数値使い文字を1文字抽出するという働きになります。
$A$1が、パスワードで使用する文字列を記入したA1セル、
$B$1が、セルA1の文字列の数をカウントしたセル
として、RANDBETWEEN関数によって、1からA1の文字数までの数をランダムに返して、その数に対して、A1の文字列の先頭から数えて該当の番号の文字を抽出するという事です。
なので、この関数を欲しい文字数分だけ繰り返して繋げれば、ランダムなパスワードを生成するツールになるのではという事です。
試しに、セルA2~セルA7まで関数をコピーしてみました。
一文字なので幾つか同じ文字が抽出されてしまいましたが、ランダムに文字が抽出されていましたが、桁数が多くなれば重複は減ると思います。必要な桁数だけさきほどの関数を繋げれば完成です。
文字の結合にはCONCATENATE関数を使います。(‘&’で繋いでも良いかも)
=CONCATENATE(MID($A$1,(RANDBETWEEN(1,$B$1)),1)
,MID($A$1,(RANDBETWEEN(1,$B$1)),1)
,MID($A$1,(RANDBETWEEN(1,$B$1)),1)
:
:
,MID($A$1,(RANDBETWEEN(1,$B$1)),1)
,MID($A$1,(RANDBETWEEN(1,$B$1)),1))
画像の例では4文字分の生成となっているため、4個の関数を結合しています。
試しにセルA8~A13まで関数をコピーしてみました。
いい感じですね。システムの多くは8文字以上のパスワードを要求してくると思いますので、CONCATENATE関数の記述(つなげる関数の数)を要求に合わせて適宜調整すれば良いかと。
使えない文字や使いたくない文字も調整できるし、セルの数式をコピーしていけばパスワードの大量生産できるので、意外と使い勝手が良いのではないかと思いました。
ではまた!
※備忘録的なTipsでした!