前回の記事の続きです。
前回はGUIDを作成するスクリプトでしたが、今回はパスワードに使えそうなランダムな文字列を作成するスクリプトです(元々は「ランダムな文字列を生成するVBAマクロ」で書いたコードです)。
Option Explicit Dim num, cbo Dim ret num = InputBox("パスワードの文字数を選択してください。", _ "文字数選択", 16) If IsEmpty(num) = True Then WScript.Quit If IsNumeric(num) = False Then WScript.Quit cbo = InputBox("文字の組み合わせを選択してください。" & vbNewLine & _ "1:数字のみ" & vbNewLine & _ "2:数字+半角英字(小文字)" & vbNewLine & _ "3:数字+半角英字(小文字)+半角英字(大文字)" & vbNewLine & _ "4:数字+半角英字(小文字)+半角英字(大文字)+記号", _ "文字の組み合わせ選択", 3) If IsEmpty(cbo) = True Then WScript.Quit If IsNumeric(cbo) = False Then WScript.Quit Do ret = InputBox("生成された下記パスワードをコピー&ペーストしてお使いください。" & vbNewLine & vbNewLine & _ "別のパスワードを生成する場合はEnterキー、もしくは「OK」ボタンをクリックしてください。" & vbNewLine & _ "終了する場合は「キャンセル」ボタンをクリックしてください。", _ "パスワード作成", GenerateRndString(CInt(num), CInt(cbo))) Loop Until Len(Trim(ret)) < 1 Private Function GenerateRndString(ByVal Num, ByVal Cbo) 'ランダムな文字列を生成 Dim ret Dim proc '初期化 ret = "" If Num < 1 Then Num = 1 If Num > 100 Then Num = 100 '文字数上限 If Cbo < 1 Then Cbo = 1 If Cbo > 4 Then Cbo = 4 '組み合わせ上限 Do proc = RndScope(1, Cbo) Select Case proc Case 1: ret = ret & GetRndNum() Case 2: ret = ret & GetRndAlphabetLC() Case 3: ret = ret & GetRndAlphabetUC() Case 4: ret = ret & GetRndSymbol() End Select Loop Until Len(ret) >= Num GenerateRndString = ret End Function Private Function GetRndNum() 'ランダムな数字(0 - 9)を取得 GetRndNum = RndScope(0, 9) End Function Private Function GetRndAlphabetLC() 'ランダムな英字(a - z)を取得 GetRndAlphabetLC = ChrW(RndScope(97, 122)) End Function Private Function GetRndAlphabetUC() 'ランダムな英字(A - Z)を取得 GetRndAlphabetUC = ChrW(RndScope(65, 90)) End Function Private Function GetRndSymbol() 'ランダムな記号( !#$%&()*+-:;=@[\]^_`{|}~)を取得 Dim v v = Array(32, 33, 35, 36, 37, 38, 40, 41, 42, 43, _ 45, 58, 59, 61, 64, 91, 92, 93, 94, 95, _ 96, 123, 124, 125, 126) GetRndSymbol = ChrW(v(RndScope(LBound(v), UBound(v)))) End Function Private Function RndScope(ByVal MinNum, ByVal MaxNum) '指定した範囲の乱数を生成 Dim ret Randomize ret = Int(Rnd() * (MaxNum - MinNum + 1) + MinNum) RndScope = ret End Function
実行すると下図のようにInputBoxが表示され、Enterキー、もしくはOKボタンをクリックすると、文字列を再生成します。
仕組みは単純で、ランダムな数字、英字(小文字・大文字)、記号(記号一覧は「強力なパスワードの作成に関するヒント」を参考にしました)を取得する関数を用意し、それらを組み合わせて指定した桁数の文字列を作成しているだけです。
この記事へのコメントはありません。