前回の記事の続きです。
前回は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ボタンをクリックすると、文字列を再生成します。
仕組みは単純で、ランダムな数字、英字(小文字・大文字)、記号(記号一覧は「強力なパスワードの作成に関するヒント」を参考にしました)を取得する関数を用意し、それらを組み合わせて指定した桁数の文字列を作成しているだけです。
















この記事へのコメントはありません。