SSブログ

パスワード作成の話。。(続き3)

2012-10-20 22:14 の記事


の続きで、パスワードを作成するマクロの完成形を示します。
マクロは3つです。

マクロ1:パスワードの文字を1文字生成
マクロ2:マクロ1を呼んで、n文字のパスワードを生成
マクロ3:パスワードを再計算

以下に、マクロのコードを示します。

01: Function UFPassword2(mode1 As Integer) As String
02:   ' 機能 : パスワードの文字を1文字生成
03:   ' 【引数】
04:   ' mode1 : 文字の種類
05:   ' =0 : 英字(大)'A' - 'Z' 0x41(65) - 0x5A(90)
06:   ' =1 : 英字(小)'a' - 'z' 0x61(97) - 0x7A(122)
07:   ' =2 : 数字 '1' - '9' 0x31(49) - 0x39(57)
08:   Randomize ' 乱数系列を再設定
09:   Select Case mode1
10:     Case 0
11:       UFPassword2 = Chr(Int(Rnd(1#) * 26 + 65))
12:     Case 1
13:       UFPassword2 = Chr(Int(Rnd(1#) * 26 + 97))
14:     Case 2
15:       UFPassword2 = Chr(Int(Rnd(1#) * 9 + 49))
16:     Case Else
17:       UFPassword2 = "*"
18:   End Select
19: End Function

01行目:引数として文字の種類(mode1)を指定します。
08行目:乱数系列を再設定します。
09行目:mode1変数で、文字の種類を選択しています。
10-11行目:mode1=0なら、英字(大)(A-Z)を1文字返して、関数を終了します。
12-13行目:mode1=1なら、英字(小)(a-z)を1文字返して、関数を終了します。
14-15行目:mode1=2なら、数字(1-9)を1文字返して、関数を終了します。
16-17行目:mode1=それ以外なら、"*"を返して、関数を終了します。

----------------------------------------------------------------------------

01: Function UFPassword1(mode1 As Integer, NmMoji1 As Integer) As String
02:   ' 機能 : パスワードを生成する
03:   ' 【引数】
04:   ' mode1 : パスワードの種類
05:   ' =0 : 1文字目:英字(大)、2-n文字:英字(大)、英字(小)、数字(1-9)
06:   ' =1 : 1文字目:数字(1-9)、2-n文字:数字(1-9)
07:   ' NmMoji1 : パスワードの文字数
08:   ' 【変数】
09:   Dim PW1() ' パスワード文字列の配列(1文字ずつ)
10:   Dim NmMoji2 As Integer ' PW1配列の添字の上限
11:   NmMoji2 = NmMoji1 - 1
12:   ReDim Preserve PW1(NmMoji2)
13:   Dim i, j As Integer ' 整数
14:   Dim TmpStr1 As String ' 文字列
15:   Randomize ' 乱数系列を再設定
16:   ' 1文字目
17:   Select Case mode1
18:     Case 0
19:       PW1(0) = UFPassword2(0)
20:     Case 1
21:       PW1(0) = UFPassword2(2)
22:     Case Else
23:       PW1(0) = "*"
24:   End Select
25:   ' 2 - n文字目
26:   For i = 1 To NmMoji2
27:     Select Case mode1
28:       Case 0
29:         j = Int(Rnd(1#) * 3)
30:         PW1(i) = UFPassword2(j)
31:       Case 1
32:         PW1(i) = UFPassword2(2)
33:       Case Else
34:         PW1(i) = "*"
35:     End Select
36:   Next i
37:   ' パスワード文字列を連結
38:   TmpStr1 = ""
39:   For i = 0 To NmMoji2
40:     TmpStr1 = TmpStr1 + PW1(i)
41:   Next i
42:   UFPassword1 = TmpStr1
43: End Function

01行目:引数としてパスワードの種類(mode1)、文字数(NmMoji1)を指定します。
09-14行目:変数定義
12行目:PW1配列をパスワード文字数に合わせてサイズ変更。
15行目:乱数系列を再設定します。
17-24行目:パスワードの1文字目を生成
26-36行目:パスワードの2 - n文字目を生成
38-41行目:パスワード文字列を連結
42行目:連結したパスワード文字列を返して完了

----------------------------------------------------------------------------

1: Sub USReCal1()
2:   ' 機能 : パスワードを再計算
3:   Application.Calculation = xlManual
4:   With Worksheets("data")
5:     .Range("Password1").Calculate
6:     .Range("Password2").Calculate
7:   End With
8:   Application.Calculation = xlAutomatic
9: End Sub

3行目:自動再計算の停止
4-7行目:パスワードを再計算
8行目:自動再計算の再開

ワークシートは、こんな感じです。

002.jpg

B15セルには、'=UFPassword1(0, 8)'が入っています。
B16セルには、'=UFPassword1(1, 8)'が入っています。
B17セルには、'=UFPassword1(2, 8)'が入っています。
再計算ボタンには、USReCal1マクロが登録されています。
再計算ボタンをクリックすると、パスワードが変わります。
パスワード3は、パスワードの種類(mode1)が範囲外の'2'なので、"********"となっています。

では。[猫]

001.jpg

危険です!

Rolling Stones - Sympathy for the Devil [CoD: Black Ops - Crashsite Mission]

ヤバイぜ!(7)  コメント(1)  トラックバック(0) 
共通テーマ:日記・雑感

ヤバイぜ! 7

コメント 1

cheese999

nice! ありがとうございます。
(^_0)ノ
by cheese999 (2012-10-22 22:48) 

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。