Password Generator
9
Description:
Call one of the overloaded functions and a you will have a randomly generated password.
Generate() - Will generate a password 13 or (more/less) characters in length ranging from A-Z a-z 0-9 and other characters such as @ # %... etc.
Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer)
Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char) - Allows you to set your ASCII range if you wish not to include number for example.
Generate(ByVal ExcludeValues As String()) - Works like Generate() buts characters passed in the array will not be used to generate the password.
Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer, ByVal ExcludeValues As String())
Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char, ByVal ExcludeValues As String()) - Works like Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer) & Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char), but allows you to also exclude characters that you do not wish the generator to use.
UPDATE
03/06/2006: Included use of Phill64's TrueRandom2 class for generating random numbers. Also overloaded the constructor so that a length can be set for the password, if the length is not set the default is set to 13.
Call one of the overloaded functions and a you will have a randomly generated password.
Generate() - Will generate a password 13 or (more/less) characters in length ranging from A-Z a-z 0-9 and other characters such as @ # %... etc.
Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer)
Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char) - Allows you to set your ASCII range if you wish not to include number for example.
Generate(ByVal ExcludeValues As String()) - Works like Generate() buts characters passed in the array will not be used to generate the password.
Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer, ByVal ExcludeValues As String())
Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char, ByVal ExcludeValues As String()) - Works like Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer) & Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char), but allows you to also exclude characters that you do not wish the generator to use.
UPDATE
03/06/2006: Included use of Phill64's TrueRandom2 class for generating random numbers. Also overloaded the constructor so that a length can be set for the password, if the length is not set the default is set to 13.
Option Explicit On
Option Strict On
Imports System
Imports System.Text
Public Class PasswordGenerator
Private PWD_LENGTH As Integer
#Region " Random Number Generation "
'The following class and code in this region was designed
'by Phill64 on http://www.vbforums.com. All credit for
'random number generation goes to him.
Protected Class TrueRandom2
Public Function GetDouble() As Double
Dim r As New Security.Cryptography.RNGCryptoServiceProvider
Dim bt(15) As Byte
r.GetNonZeroBytes(bt)
Dim d As Double = bt(0)
For i As Integer = 1 To 15
d *= bt(i)
Next
d /= (10 ^ (Math.Floor(d).ToString.Length))
d -= Math.Floor(d)
Return d
End Function
Public Function GetNext(ByVal lower As Integer, ByVal upper As Integer) As Integer
'returns a random itneger between specified bounds
'ratio a random decimal number to the required bounds
'Changed CInt to Convert.ToInt32 Derek
Return Convert.ToInt32((lower + (GetDouble() * (upper - lower))))
End Function
Public Function GetNext() As Integer
'returns a random integer
'Changed CInt to Convert.ToInt32 Derek
Return Convert.ToInt32((GetDouble() * Integer.MaxValue))
End Function
Public Function GetLong() As Long
'Changed CLng to Convert.ToInt64 Derek
Return Convert.ToInt64((GetDouble() * Long.MaxValue))
End Function
End Class
#End Region
Public Sub New()
PWD_LENGTH = 13
End Sub
Public Sub New(ByVal PasswordLength As Integer)
PWD_LENGTH = PasswordLength
End Sub
Public Function Generate() As String
Dim pwd As String = String.Empty
Dim rng As New TrueRandom2
For i As Integer = 1 To PWD_LENGTH
Dim GoodValue As Boolean = False
Do While Not GoodValue
'ASCII value range 32 to 126.
Dim value As Integer = rng.GetNext(32, 126)
pwd += Convert.ToChar(value)
GoodValue = True
Loop
Next
rng = Nothing
Return pwd
End Function
Public Function Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer) As String
Dim pwd As String = String.Empty
Dim rng As New TrueRandom2
For i As Integer = 1 To PWD_LENGTH
Dim GoodValue As Boolean = False
Do While Not GoodValue
'ASCII value range AsciiMin to AsciiMax, to get the correct
'range we need to take AsciiMax - AsciiMin = (Ascii Range)
Dim value As Integer = rng.GetNext(AsciiMin, AsciiMax)
pwd += Convert.ToChar(value)
GoodValue = True
Loop
Next
rng = Nothing
Return pwd
End Function
Public Function Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char) As String
Dim pwd As String = String.Empty
Dim rng As New TrueRandom2
Dim iAsciiMin As Integer = Convert.ToInt32(AsciiMin)
Dim iAsciiMax As Integer = Convert.ToInt32(AsciiMax)
For i As Integer = 1 To PWD_LENGTH
Dim GoodValue As Boolean = False
Do While Not GoodValue
'ASCII value range AsciiMin to AsciiMax, to get the correct
'range we need to take AsciiMax - AsciiMin = (Ascii Range)
Dim value As Integer = rng.GetNext(iAsciiMin, iAsciiMax)
pwd += Convert.ToChar(value)
GoodValue = True
Loop
Next
rng = Nothing
Return pwd
End Function
Public Function Generate(ByVal ExcludeValues As String()) As String
Dim pwd As String = String.Empty
Dim rng As New TrueRandom2
Dim ASCII_VAL(ExcludeValues.Length - 1) As Integer
'Convert the excluded values to the the ASCII
'equivalent of the character represention and
'add it to the ASCII_VAL array.
For i As Integer = 0 To ExcludeValues.Length - 1
ASCII_VAL(i) = Convert.ToInt32(ExcludeValues(i).Chars(0))
Next
Array.Sort(ASCII_VAL)
For i As Integer = 1 To PWD_LENGTH
Dim GoodValue As Boolean = False
Do While Not GoodValue
'ASCII value range 32 to 126.
Dim value As Integer = rng.GetNext(32, 126)
'Determine if the value that was generated is
'not an excluded value.
If Array.BinarySearch(ASCII_VAL, value) < 0 Then
pwd += Convert.ToChar(value)
GoodValue = True
End If
Loop
Next
rng = Nothing
Return pwd
End Function
Public Function Generate(ByVal AsciiMin As Integer, ByVal AsciiMax As Integer, ByVal ExcludeValues As String()) As String
Dim pwd As String = String.Empty
Dim rng As New TrueRandom2
Dim ASCII_VAL(ExcludeValues.Length - 1) As Integer
'Convert the excluded values to the the ASCII
'equivalent of the character represention and
'add it to the ASCII_VAL array.
For i As Integer = 0 To ExcludeValues.Length - 1
ASCII_VAL(i) = Convert.ToInt32(ExcludeValues(i).Chars(0))
Next
Array.Sort(ASCII_VAL)
For i As Integer = 1 To PWD_LENGTH
Dim GoodValue As Boolean = False
Do While Not GoodValue
'ASCII value range AsciiMin to AsciiMax, to get the correct
'range we need to take AsciiMax - AsciiMin = (Ascii Range)
Dim value As Integer = rng.GetNext(AsciiMin, AsciiMax)
'Determine if the value that was generated is
'not an excluded value.
If Array.BinarySearch(ASCII_VAL, value) < 0 Then
pwd += Convert.ToChar(value)
GoodValue = True
End If
Loop
Next
rng = Nothing
Return pwd
End Function
Public Function Generate(ByVal AsciiMin As Char, ByVal AsciiMax As Char, ByVal ExcludeValues As String()) As String
Dim pwd As String = String.Empty
Dim rng As New TrueRandom2
Dim iAsciiMin As Integer = Convert.ToInt32(AsciiMin)
Dim iAsciiMax As Integer = Convert.ToInt32(AsciiMax)
Dim ASCII_VAL(ExcludeValues.Length - 1) As Integer
'Convert the excluded values to the the ASCII
'equivalent of the character represention and
'add it to the ASCII_VAL array.
For i As Integer = 0 To ExcludeValues.Length - 1
ASCII_VAL(i) = Convert.ToInt32(ExcludeValues(i).Chars(0))
Next
Array.Sort(ASCII_VAL)
For i As Integer = 1 To PWD_LENGTH
Dim GoodValue As Boolean = False
Do While Not GoodValue
'ASCII value range AsciiMin to AsciiMax, to get the correct
'range we need to take AsciiMax - AsciiMin = (Ascii Range)
Dim value As Integer = rng.GetNext(iAsciiMin, iAsciiMax)
'Determine if the value that was generated is
'not an excluded value.
If Array.BinarySearch(ASCII_VAL, value) < 0 Then
pwd += Convert.ToChar(value)
GoodValue = True
End If
Loop
Next
rng = Nothing
Return pwd
End Function
End Class






Babak Zawari
بابک زواري