VBScript

パスワードに使えそうなランダムな文字列を作成するVBScript

前回の記事の続きです。

前回は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ボタンをクリックすると、文字列を再生成します。

仕組みは単純で、ランダムな数字、英字(小文字・大文字)、記号(記号一覧は「強力なパスワードの作成に関するヒント」を参考にしました)を取得する関数を用意し、それらを組み合わせて指定した桁数の文字列を作成しているだけです。

関連記事

  1. VBScript

    Microsoft Edgeのバージョン情報をクリップボードにコピーするVBScript

    前回の記事に引き続き、自分の手間を減らすためのスクリプト、今回はMic…

  2. VBScript

    clipコマンドを利用してクリップボードに文字列をコピーするVBScript

    clipコマンドを利用して文字列をクリップボードにコピーするVBScr…

  3. Windows関連

    ダウンロードフォルダーのパスを取得するVBScript

    ダウンロードフォルダーのパスを取得する必要があったので、過去に書いた記…

  4. Office関連

    「2014年12月のWindows Update以降コマンドボタンが使えなくなった」トラブルへのFi…

    当ブログでも「KB2553154の更新プログラムをアンインストールする…

  5. VBScript

    WordPressのバックアップを取ってローカル環境で動かす方法(3)

    「WordPressのバックアップを取ってローカル環境で動かす方法(1…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP