This is a simple yet highly customizable function that allows you to generate random strings using VBScript that you can use in your ASP/VBScript applications. The random strings can be used for various purposes, including:
- Login Systems
- Random password for new registrations
- Random password for users requesting password reset
- Referral Codes
- Promotional Codes
- Primary Keys for tables where using integers as primary keys is not desirable
The following code is a VBScript translation of the php random string function I wrote earlier. It generates an 8 character long random string that contains 1 digit:
<%
function RandomString( )
Randomize( )
dim CharacterSetArray
CharacterSetArray = Array( _
Array( 7, "abcdefghijklmnopqrstuvwxyz" ), _
Array( 1, "0123456789" ) _
)
dim i
dim j
dim Count
dim Chars
dim Index
dim Temp
for i = 0 to UBound( CharacterSetArray )
Count = CharacterSetArray( i )( 0 )
Chars = CharacterSetArray( i )( 1 )
for j = 1 to Count
Index = Int( Rnd( ) * Len( Chars ) ) + 1
Temp = Temp & Mid( Chars, Index, 1 )
next
next
dim TempCopy
do until Len( Temp ) = 0
Index = Int( Rnd( ) * Len( Temp ) ) + 1
TempCopy = TempCopy & Mid( Temp, Index, 1 )
Temp = Mid( Temp, 1, Index - 1 ) & Mid( Temp, Index + 1 )
loop
RandomString = TempCopy
end function
%>
Sample Output
jogwafs2 uuwigi6r cj3gpdbn 7ifmzdhq yvceae4x qm8dxhik 4kyhyevr evk9hmcb
For better readability and ease of customization, I have split the CharacterSetArray definition on to multiple lines. This code relies on VBScript Arrays and the following functions:
- Randomize( )
- Rnd( )
- Int( )
- Len( )
- Mid( )
Customization
With minor changes to the CharacterSetArray, you can customize the length and characters of the generated strings.
Complex password that contains 1 digit and 1 symbol
<%
function RandomString( )
Randomize( )
dim CharacterSetArray
CharacterSetArray = Array( _
Array( 6, "abcdefghijklmnopqrstuvwxyz" ), _
Array( 1, "0123456789" ), _
Array( 1, "!@#$+-*&?:" ) _
)
dim i
dim j
dim Count
dim Chars
dim Index
dim Temp
for i = 0 to UBound( CharacterSetArray )
Count = CharacterSetArray( i )( 0 )
Chars = CharacterSetArray( i )( 1 )
for j = 1 to Count
Index = Int( Rnd( ) * Len( Chars ) ) + 1
Temp = Temp & Mid( Chars, Index, 1 )
next
next
dim TempCopy
do until Len( Temp ) = 0
Index = Int( Rnd( ) * Len( Temp ) ) + 1
TempCopy = TempCopy & Mid( Temp, Index, 1 )
Temp = Mid( Temp, 1, Index - 1 ) & Mid( Temp, Index + 1 )
loop
RandomString = TempCopy
end function
%>
Sample Output
zb5&bxjr pd$8lrlu yljmoq:5 $xsaxc6r sf!n3mho tpg+t4pr @zykc1pb ln3ep-vk
Even more complex password that contains 1 upper-case character, 1 digit and 1 symbol
<%
function RandomString( )
Randomize( )
dim CharacterSetArray
CharacterSetArray = Array( _
Array( 5, "abcdefghijklmnopqrstuvwxyz" ), _
Array( 1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ), _
Array( 1, "0123456789" ), _
Array( 1, "!@#$+-*&?:" ) _
)
dim i
dim j
dim Count
dim Chars
dim Index
dim Temp
for i = 0 to UBound( CharacterSetArray )
Count = CharacterSetArray( i )( 0 )
Chars = CharacterSetArray( i )( 1 )
for j = 1 to Count
Index = Int( Rnd( ) * Len( Chars ) ) + 1
Temp = Temp & Mid( Chars, Index, 1 )
next
next
dim TempCopy
do until Len( Temp ) = 0
Index = Int( Rnd( ) * Len( Temp ) ) + 1
TempCopy = TempCopy & Mid( Temp, Index, 1 )
Temp = Mid( Temp, 1, Index - 1 ) & Mid( Temp, Index + 1 )
loop
RandomString = TempCopy
end function
%>
Sample Output
cg9hm$Yy Mmp&j1kp kipww7H+ ?oVjny9b Qjq5lgi- sd:7Elnp *kaxgl4Z xqjc5jN!
Referral code containing mix of digits and upper-case characters
<%
function RandomString( )
Randomize( )
dim CharacterSetArray
CharacterSetArray = Array( _
Array( 4, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ), _
Array( 4, "0123456789" ) _
)
dim i
dim j
dim Count
dim Chars
dim Index
dim Temp
for i = 0 to UBound( CharacterSetArray )
Count = CharacterSetArray( i )( 0 )
Chars = CharacterSetArray( i )( 1 )
for j = 1 to Count
Index = Int( Rnd( ) * Len( Chars ) ) + 1
Temp = Temp & Mid( Chars, Index, 1 )
next
next
dim TempCopy
do until Len( Temp ) = 0
Index = Int( Rnd( ) * Len( Temp ) ) + 1
TempCopy = TempCopy & Mid( Temp, Index, 1 )
Temp = Mid( Temp, 1, Index - 1 ) & Mid( Temp, Index + 1 )
loop
RandomString = TempCopy
end function
%>
Sample Output
9HL284CB OTH357O8 DY6W32J0 4KI134MJ QP190HE9 KDU35A67 PY03F3S2 3EBV871R


0 comments:
Post a Comment