[size=2][color=#0000ff][size=2][color=#0000ff]Option[/color][/size][size=2][color=#0000ff]Strict[/color][/size][size=2][color=#0000ff]On
Imports[/color][/size][size=2][color=#000000] System.Text[/color]
[/size][size=2][color=#0000ff]Public[/color][/size][size=2][color=#0000ff]Class[/color][/size][size=2][color=#000000] RandomKeyGenerator[/color]
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] Key_Letters [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]String
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] Key_Numbers [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]String
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] Key_Chars [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] LettersArray [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Char[/color][/size][size=2]()
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] NumbersArray [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Char[/color][/size][size=2]()
[/size][size=2][color=#0000ff]Protected[/color][/size][size=2][color=#0000ff]Friend[/color][/size][size=2][color=#0000ff]WriteOnly[/color][/size][size=2][color=#0000ff]Property[/color][/size][size=2] KeyLetters() [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]String
[/color][/size][size=2][color=#0000ff]Set[/color][/size][size=2]([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] Value [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]String[/color][/size][size=2])
Key_Letters = Value
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff] Set
[/color][/size][size=2][color=#0000ff]End Property
[/color][/size][size=2][color=#0000ff]Protected[/color][/size][size=2][color=#0000ff] Friend[/color][/size][size=2][color=#0000ff] WriteOnly[/color][/size][size=2][color=#0000ff] Property[/color][/size][size=2] KeyNumbers() [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff] String
[/color][/size][size=2][color=#0000ff]Set[/color][/size][size=2]([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] Value [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]String[/color][/size][size=2])
Key_Numbers = Value
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff] Set
[/color][/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff] Property
[/color][/size][size=2][color=#0000ff]Protected[/color][/size][size=2][color=#0000ff] Friend[/color][/size][size=2][color=#0000ff] WriteOnly[/color][/size][size=2][color=#0000ff]Property[/color][/size][size=2] KeyChars() [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff] Integer
[/color][/size][size=2][color=#0000ff]Set[/color][/size][size=2]([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] Value [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer[/color][/size][size=2])
Key_Chars = Value
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff]Set
[/color][/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff] Property
[/color][/size][size=2][color=#0000ff]Function[/color][/size][size=2] Generate() [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff] String
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] i_key [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff] Integer
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] Random1 [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff] Single
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] arrIndex [/size][size=2][color=#0000ff]As[/color][/size][size=2] Int16
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] sb [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]New[/color][/size][size=2] StringBuilder
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] RandomLetter [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff] String
[/color][/size][size=2][color=#008000]' CONVERT LettersArray & NumbersArray TO CHARACTR ARRAYS
[/color][/size][size=2]LettersArray = Key_Letters.ToCharArray
NumbersArray = Key_Numbers.ToCharArray
[/size][size=2][color=#0000ff]For[/color][/size][size=2] i_key = 1 [/size][size=2][color=#0000ff]To[/color][/size][size=2] Key_Chars
[/size][size=2][color=#008000]'START THE CLOCK [/color][/size]
[size=2]Randomize()
Random1 = Rnd()
arrIndex = -1
[/size][size=2][color=#008000]'IF THE VALUE IS AN EVEN NUMBER WE GENERATE A LETTER, OTHERWISE WE 'GENERATE A NUMBER [/color][/size]
[size=2][color=#008000]'THE NUMBER '111' WAS RANDOMLY CHOSEN. ANY NUMBER WILL DO, WE JUST 'NEED TO BRING THE VALUE ABOVE '0' [/color][/size]
[size=2][color=#0000ff]If[/color][/size][size=2] ([/size][size=2][color=#0000ff]CType[/color][/size][size=2](Random1 * 111, [/size][size=2][color=#0000ff]Integer[/color][/size][size=2])) [/size][size=2][color=#0000ff]Mod[/color][/size][size=2] 2 = 0 [/size][size=2][color=#0000ff]Then
[/color][/size]
[size=2][color=#008000]'GENERATE A RANDOM LOCATION IN THE LETTERS CHARACTER ARRAY [/color][/size]
[size=2][color=#0000ff]Do[/color][/size][size=2][color=#0000ff]While[/color][/size][size=2] arrIndex < 0
arrIndex = Convert.ToInt16(LettersArray.GetUpperBound(0) * Random1)
[/size][size=2][color=#0000ff]Loop
[/color][/size][size=2]RandomLetter = LettersArray(arrIndex)
[/size][size=2][color=#008000]'CREATE ANOTHER RANDOM NUMBER. IF IT IS ODD, WE CAPITALIZE THE 'LETTER [/color][/size]
[size=2][color=#0000ff]If[/color][/size][size=2] ([/size][size=2][color=#0000ff]CType[/color][/size][size=2](arrIndex * Random1 * 99, [/size][size=2][color=#0000ff]Integer[/color][/size][size=2])) [/size][size=2][color=#0000ff]Mod[/color][/size][size=2] 2 <> 0 [/size][size=2][color=#0000ff]Then
[/color][/size][size=2]RandomLetter = LettersArray(arrIndex).ToString
RandomLetter = RandomLetter.ToUpper
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff] If
[/color][/size][size=2]sb.Append(RandomLetter)
[/size][size=2][color=#0000ff]Else
[/color][/size][size=2][color=#008000]'GENERATE A RANDOM LOCATION IN THE NUMBERS CHARACTER ARRAY
[/color][/size][size=2][color=#0000ff]Do[/color][/size][size=2][color=#0000ff]While[/color][/size][size=2] arrIndex < 0
arrIndex = Convert.ToInt16(NumbersArray.GetUpperBound(0) * Random1)
[/size][size=2][color=#0000ff]Loop
[/color][/size][size=2]sb.Append(NumbersArray(arrIndex))
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff] If
[/color][/size][size=2][color=#0000ff]Next
[/color][/size][size=2][color=#0000ff]Return[/color][/size][size=2] sb.ToString
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff] Function
End[/color][/size][size=2][color=#0000ff] Class
[/color][/size][/color][/size][size=2][color=#0000ff]
[/color][/size]