Excel VB | random password generator

There are a couple of way I like to create passwords usually from a Filemaker server, for more security, but here is an excel equivalent of what I use:

Random Password Generator

This code below generates passwords completely randomly.

Public Function RndPass(Length As Integer, Optional Lower As Boolean) As String

Dim Max As Integer
Dim Min As Integer

Dim RndPassLoop As String

Max = 126
Min = 48

Randomize Timer

If Length < 8 Then
Length = 8
End If

For i = 1 To Length
RndPassLoop = RndPassLoop & Chr(Int((Max - Min + 1) * Rnd + Min))
Next i

If Lower = False Then
RndPass = RndPassLoop
Else
RndPass = StrConv(RndPassLoop, vbLowerCase)
End If

End Function

‘add this code to a vb module
’syntax is RndPass(Length of password, True (lowercase) / Empty or False (both upper and lower)
‘RndPass(20,1) = 20 characters lower case

Password from Phrase Generator

Here is my code to convert a phrase or sentence to a secure password but with a structure to it. I find this useful - it replaces a number of set letters (that you can define yourself) from the given string phrase. All you need to do is remember the phrase you use and you can re-generate your password - I usually use this for passwords I don’t use regularly, would forget and that aren’t as easy to reset.

Not that I recommend this, but it means you can also write the phrase down somewhere. (I use distinct phrases but you can use nice simple ones like your birthday “January 1st 1990″ or the name of your partner - since if someone saw them written down they wouldn’t instantly look like a password).

Excel isn’t the most secure carrier of code for a password generator unless you compile it to a dll file - so make sure you don’t use silly filenames and keep it secure.

Public Function RndPassP(Phrase As String) As String

Dim Max As Integer
Dim Min As Integer

Dim RndPassLoop As String

If Len(Phrase) < 12 Then
RndPassP = “Phrase too short - please choose something longer”
Exit Function
End If

If subStringCount(Phrase, “a”) + _
subStringCount(Phrase, “c”) + _
subStringCount(Phrase, “e”) + _
subStringCount(Phrase, “i”) + _
subStringCount(Phrase, “o”) + _
subStringCount(Phrase, “s”) + _
subStringCount(Phrase, “u”) + _
subStringCount(Phrase, “r”) < 4 Then

RndPassP = “Phrase does not include enough key letters - please choose another”
Exit Function
End If

Phrase = StrConv(Phrase, vbLowerCase)

Randomize Timer

RndPassLoop = Replace(Phrase, “a”, “@”)
Phrase = Replace(RndPassLoop, “b”, “8″)
RndPassLoop = Replace(Phrase, “e”, “3″)
Phrase = Replace(RndPassLoop, “i”, “!”)
RndPassLoop = Replace(Phrase, “o”, “0″)
Phrase = Replace(RndPassLoop, “s”, “$”)
RndPassLoop = Replace(Phrase, ” “, “”)
Phrase = Replace(RndPassLoop, “u”, “*”)
RndPassLoop = Replace(Phrase, “r”, “£”)
Phrase = Replace(RndPassLoop, “m”, “M”)
RndPassLoop = Replace(Phrase, “n”, “N”)
Phrase = Replace(RndPassLoop, “t”, “T”)
RndPassLoop = Replace(Phrase, “x”, “X”)
Phrase = Replace(RndPassLoop, “g”, “G”)

Phrase = RndPassLoop & “:)”

RndPassP = Phrase

End Function

Function subStringCount(longString As String, subString As String) As Double
subStringCount = Len(longString) _
- Len(Application.Substitute(longString, subString, vbNullChar))
End Function

‘add this code to a vb module
’syntax is ‘RndPassP(string):
‘RndPassP(”I work in Property Finance”)

Let me know what you think about these and what sort of password system you use?


Related Posts