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. Windows 10

    Microsoft Update カタログから累積更新プログラムをダウンロードするVBScript

    「累積更新プログラム」とは、その名の通りOSを最新の状態に保つための更…

  2. VBScript

    GUIDを作成するVBScript

    Office アドインを作成するのに必要(マニフェストのId要素)なG…

  3. VBScript

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

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

  4. VBScript

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

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

  5. Windows関連

    Lhaplusのバージョンを取得するVBScript

    およそ2年ぶりに圧縮・解凍ソフトの「Lhaplus」がバージョンアップ…

  6. VBScript

    クリップボードに文字列をコピーする

    2012/4/3 追記:関連記事として「clipコマンドを利用してクリ…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP