So-net無料ブログ作成
検索選択

Excelを使って、ランダムパスワードを作ってみよう!! [コンピュータ]

お久しぶりに、コンピュータのマメ知識ねた。

会社の社員が利用するシステムがあって、そのシステムにログインするための
初期パスワードを作成したい。

なんてことが、仕事の関係で発生しました。

さて、どうしましょ・・

「一律に初期パスワードとして、社員全員に『11111111』なんていう簡単なものを与えて、
 初期ログオン時に変更してもらう。」

ってのも、手ですが・・・最初に不正ログインされると困るんだよね。。

って事で、社員個々にランダムにパスワードを付与することとします。

ネットで検索すると、色々なツールがあるようだけれど、この方法を使えば、Excelシートにそのまま利用できるんで便利です。

では、Excelを準備。

関数は、基本としては、RANDOM関数を使います。

これは、セルに直接

 =rand()

と記入するだけ。
そうすれば、0~1 までのなかからランダムに数値が返ってきます。
(ただし、0以上で1未満(1は含まない))

0.775552 のように、少数で表示されます。

応用編として、RANDBETWEEN関数があります。

これも、セルに直接

 =randbetween(最小値,最大値)

と記入するだけ。
例として、 =RANDBETWEEN(1,100) とすると
最小値:1 から 最大値:100 までの中から ランダムに整数値が返ってきます。

(注)この RANDBETWEEN は、Excelのバージョンによっては、分析ツールのアドインの追加が必要となります。関数を入力してもエラーとなる場合は、一個作業追加です。

・Excelの画面から、「ツール」 → 「アドイン」  とクリックし、分析ツール にチェックをして下さい。


さてここまではいいでしょうか?

もし、パスワードが数値のみでよければ、この RAND関数か、RANDBETWEEN関数がそのまま利用できますね。

4桁のランダムな数字が欲しいなら
①RAND関数によって

  =INT(RAND()*10000)

  とします。このINT関数は、数値の整数部分のみ返してくれる関数です。
  RAND関数で返ってくる 0以上1未満 の少数値を10,000倍することで、0~9999.9999
  が返ってくるのだが、その整数部分を取り出して、0~9999 までを表示させる
  ランダム関数が出来ます。 

もっと簡単に
②RANDBETWEEN関数なら

   =RANDBETWEEN(1,9999)

  これ一発で、1から9999までの整数をランダムに返してくれます。

これによって、数値だけなら簡単に乱数発生によるパスワード作成可能です。


さて、ここからが本題。
では、文字や記号を含めたものでランダムパスワードを作りたい。

手順①
 Excelの空いた一つのセルに パスワードの文字として利用可能な文字を全て記述する。

例1)
1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
   (英数のみ)
例2)
1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-<>_()#$%&
   (例1の英数に、適当に記号を加えたもの)

*:入力する文字は、半角にしましょう(全角文字が入ると厄介です)

手順②
 手順①で記入した文字の数を数える。
 手で数えてもいけれど、カッコよく関数でやって見ましょう。

 文字列の数を数える関数は LENB関数です。

 =LENB(検査対象)

  なので、A1セルに手順①を記入した場合は、

 =LENB(A1)

となります。
ちなみに、手順①にて、例1の場合は、62  例2の場合は、73 が返ってきます。

 
手順③
 関数の入力

 =MID($A$1,(RANDBETWEEN(1,$B$1)),1)

 MID関数は、文字列の指定した位置から、指定された文字数を返すもの
 上の例の場合、$A$1のセルの文字列から、RANDBETWEEN関数によって
 返ってきた数(1~$B$1の整数)の位置の文字から、1文字を抽出してくれる。

 つまり、手順①で作った文字列(A1のセルに記入)のから、ランダムに数を数えて
 何番目かの文字を1文字抽出するのです。

 ここで、
  $A$1が、手順①での文字列を記入したセル、
  $B$1が、手順②で、A1の文字列の数をカウントしたセルとしています。

 RANDBETWEEN関数によって、1から A1の文字数までの数をランダムに返して、
 その数に対して、A1の文字列の先頭から数えて該当の番号の文字を抽出する仕組みです。

ご理解いただけたでしょうか?

手順④
 最後はこれの繰り返しです。
 パスワードの桁数だけ、これを繰り返します。

  CONCATENATE関数の利用です。

  これは、文字列をくっ付けるもの。

  8桁のパスワードが欲しい場合は、手順③の関数を8回繰り返します。

 =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)
             ,MID($A$1,(RANDBETWEEN(1,$B$1)),1)
             ,MID($A$1,(RANDBETWEEN(1,$B$1)),1)
             ,MID($A$1,(RANDBETWEEN(1,$B$1)),1))

 とこんな感じです。


 単純に、手順③の関数のみ記入したセルを作って、横向きにパスワードの必要数だけ複写。
 でもって、最後に、CONCATENATE でセル単位で結合しても結果は一緒です。
 (シート中のセル数が余分に増えるだけの違いです)


あとは、これを下向きにコピーするだけで、出来上がり
RAND.jpg

ちなみに、$A$1、$B$1 のように、先頭に $(ドル記号)があるのは絶対参照のためで、
通常、セルを下向きや横向きにコピーすると、参照先として対応したセルもコピーした方向に
参照先がずれるんですが、これを防いで、セルの参照を固定するものです。
今回の場合は必須ですので、お忘れなく。

以上が、任意の文字列を基としたランダムパスワードの作成をExcelを用いて行うものです。

皆さんの何かの役に立てると、幸いです。

たまには、職業柄のSEちっくなネタを散りばめてみました。
 
nice!(16)  コメント(17)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 16

コメント 17

DEBDYLAN

ちんぷんかんぷんでした^^;
SEなんですね!!

by DEBDYLAN (2011-03-10 01:50) 

ホタルの館

エクセルって見た目は単純ですが、出来ることは無限にあるとPCの師匠から教わりました。
by ホタルの館 (2011-03-10 03:52) 

haku

流石、SEさん!!
RANDBETWEEN関数は馴染みがありませんでした ^^;
これは、いろいろ応用できそうです!
by haku (2011-03-10 18:12) 

まちびとん

★ みなさま、ご訪問&nice!ありがとうございます m(__)m

☆ DEBDYLAN さま
マニアックな記事で、すみませんm(__)m
SEといっても、全然アマです。
SECOND EDITION だったりして・・・

☆ ホタルの館 さま
確かに、Excelの関数、マクロって色々出来ること多いですね。
Accessを使わなくっても結構いろんな事が出来ますものね。

☆ haku さま
RANDBETWEENって、RANDより使い勝手いいですからね。
何かの機会にゼヒ!!
by まちびとん (2011-03-15 00:54) 

ショッパイ親指

凄い、参考にさせてもらいました。
説明も例題がそのまま使えて分かりやすかったです。
ありがとうございました。
by ショッパイ親指 (2014-06-28 21:18) 

まちびとん

@ ショッパイ親指 さま
いえいえ。
参考にしていただき、何よりです。
この技、結構使えると思っています。
by まちびとん (2014-07-06 02:39) 

るり

すぐ使える例をありがとうございます。
早速使わせていただきます♪

自分で調べながらやると、それなりに時間がかかるので、
助かりました。
by るり (2014-11-02 08:51) 

駆け出しシステム担当者

大変参考になりました。公開されてるフリーソフトなどは会社で使えないことが多いので大変たすかります。自分で作成したエクセルデータでマクロ不使用なら何の規制にもかかりませんし、アレンジも自由自在そうです。思考の落とし穴にはまっていました。
ありがとうございました。
by 駆け出しシステム担当者 (2014-11-04 21:28) 

まちびとん

@ るり さま
この記事が役に立ったようで良かったです。
かんたんな関数(一部設定変更ありますが)で、役に立つ機能が紹介したいと思っての記事でした。
また別の機能も紹介したいと思っています。
by まちびとん (2014-11-05 23:42) 

まちびとん

@ 駆け出しシステム担当者 さま
当方の記事を参考にしていただきありがとうございます。
かんたんな関数(一部設定変更ありますが)で、マクロも使わず、誰にでも使える技だと思っての紹介記事でした。
更なる応用も可能ですので検討くださいませ。
by まちびとん (2014-11-05 23:45) 

Kazu

LENB関数とMID関数、初めて知りました!

またエクセルで出来ることが増えてしまった・・・(笑)

大変わかりやすく、参考になりました。ありがとうございます。
by Kazu (2016-05-21 18:36) 

まちびとん

@ Kazu さま
記事が参考になったようで良かったです。
簡単な仕組みなので、結構使えると思っています。
by まちびとん (2016-06-01 22:39) 

るるる

参考にさせてもらいました!

質問なのですが、LEN関数ではなくLENB関数を使用しているのは何でですか?
今回の文字列が半角英数字で成り立っているからでしょうか?
by るるる (2016-07-10 10:25) 

まちびとん

@ るるる さま
ご訪問ありがとうございます。
ご質問の件ですが、お察しのとおりです。
対象の文字列が半角であるため、LENでも、LENBでも返り値は同じなのですが、誤りをなくすためだとご理解ください。
ですので、全角文字まで含む場合は、LENを使うと対応可能となります。

by まちびとん (2016-07-12 03:04) 

とおりすがり

Excelの古いバージョンの乱数には問題があるという有名な話
(最近はよくなっているとのこと)

Excel 2007 と Excel 2003 の RAND 関数について
https://support.microsoft.com/ja-jp/kb/828795

Okumura's Blog
https://oku.edu.mie-u.ac.jp/~okumura/blog/node/2287

この本はスゴい。四辻哲章「確率分布乱数生成法」
http://nakamura.goga.co.jp/article/161345135.html

※ブログは参考になりました。

by とおりすがり (2016-08-25 14:06) 

まちびとん

@ とおりすがり さま
コメントありがとうございます。
記事の関数は、2007以降のverで操作確認済みでございます。
それ以前のofficeはMicrosoftそのものがサポート終了しちゃってますからね・・・
バグがあるという点は記事参考にさせていただきます。

by まちびとん (2016-10-03 00:55) 

小鳩

こちらの記事、大変わかりやすく参考にさせて頂きました!
1点色々と調べても分からないことがありましたので、お聞きしたいことがございます。

MID($A$1,(RANDBETWEEN(1,$B$1)),1)

こちらの関数、桁数が多くなると追加していっている様ですが、
これを別セルに入力し、そのセルを参照するだけで関数が機能するような、便利な関数をご存じであればご教示頂きたいです。

INDIRECT関数やVALUE関数とは違った使い方があるのであれば、知識として知りたいと思ってます。
by 小鳩 (2017-03-27 07:13) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
直メールはこちらまで
メッセージを送る
machivuitton@gmail.com