VB.NET Check password strength

Edit

Last modification : 2011-05-03 17:59:58

Enum PasswordScore
	Blank = 0
	VeryWeak = 1
	Weak = 2
	Medium = 3
	Strong = 4
	VeryStrong = 5
End Enum

Public Class PasswordAdvisor

	Public Shared Function CheckStrength(ByVal password As String) As PasswordScore

		Dim score As Int32 = 1

		If password.Length < 1 Then
			Return PasswordScore.Blank
		End If

		If password.Length < 4 Then
			Return PasswordScore.VeryWeak
		End If

		If password.Length >= 6 Then
			score = score + 1
		End If
		If password.Length >= 12 Then
			score = score + 1
		End If
		If Regex.IsMatch(password, "\d+") Then
			score = score + 1
		End If
		If Regex.IsMatch(password, "[a-z]") AndAlso Regex.IsMatch(password, "[A-Z]") Then
			score = score + 1
		End If
		If Regex.IsMatch(password, "[!@#\$%\^&\*\?_~\-\(\);\.\+:]+") Then
			score = score + 1
		End If

		Return CType(score, PasswordScore)

	End Function

End Class