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

    Expression WebでVBScriptのコードを書いてみる。

    今日たまたま下記の記事を見つけました。10年近く前の古い記事です。…

  2. Windows 10

    Microsoft Edgeを操作するVBScript

    「Microsoft Edgeを操作するVBAマクロ(WebDrive…

  3. Office関連

    [Mayhem]PowerPointマクロにショートカットキーを割り当てる。

    2012/4/20 追記:クイックアクセスツールバーのメニューを利用す…

  4. VBScript

    文字コードを指定してURLエンコードを行う

    本題に入る前にまずは下記エントリーをご覧ください。・64ビット…

  5. VBScript

    Office付属のVBEでVBScriptコードを書くのを助けるVBScript

    VBScriptのコードを書くとき、メモ帳等のテキストエディタではイン…

  6. VBScript

    実行中のアプリケーション一覧を出力するVBScript

    「VBS アプリ一覧 出力」というキーワード検索での訪問があったので、…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP