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

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

GUIDを作成するVBScript前のページ

[Officeアドイン]メッセージに含まれる住所や電話番号を抽出する。次のページ

関連記事

  1. VBScript

    Windows Updateの更新履歴をCSV(UTF-8)で保存するVBScript

    以前書いたスクリプトが出てきました。Windows Updateの…

  2. Office関連

    Wordのテンプレートをインストールするスクリプト

    Wordマクロをテンプレートにして使用する場合、通常そのテンプレートフ…

  3. Office関連

    古い形式のWordテンプレートを新しい形式に一括変換するVBScript

    古い形式のWordテンプレート(dot)を新しい形式(dotx,dot…

  4. Office関連

    Officeファイルから作成者などのプロパティを取得するVBScript

    下記記事でも書いていますが、xlsxやdocxといった、OOXML形式…

  5. VBScript

    Illustratorに登録されたPDFプリセットを列挙するVBScript

    前回の記事で、VBSからIllustratorが操作できることを紹介し…

  6. Office関連

    Officeアプリケーションの「最近使用したファイル」を削除するVBScript

    WordやExcel等のOfficeアプリケーションでは、下記サイトに…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP