验证生成的密码是否包含必要的字符

时间:2018-05-22 12:51:20

标签: vb.net validation visual-studio-2010 basic

需要对我正在创建的应用程序提供一点帮助。它只是一个简单的密码生成器。我有应用程序生成密码没有问题,但我需要在显示密码之前添加一个检查步骤:1个大写字母,1个小写字母,1个数字和1个特殊字符。如果密码不包含这些值,则密码应该再次生成。

我想保留我的代码,我只是想在最后添加一个步骤。

提前多多感谢。

这是我的代码:

IObservable<T>

1 个答案:

答案 0 :(得分:0)

这是您在创建或更改密码时通常会执行的操作。 我通常使用类似以下函数的方法来验证密码的复杂性:

'PasswordComplexityRegex is a string value I get from a database at login, 
'if it is not present then a default one will be use.    
Dim PasswordComplexityRegex as String 
'MinimunPasswordLenght is also a number stored in a database if not present
'it will use a default, in this case 12.
Public Function validatePassword(ByVal pass As String) As Boolean
    Dim pattern As String = "[~`!@#$%^&*()-_=+';:,./<>?]"
    If Not (String.IsNullOrEmpty(PasswordComplexityRegex)) Then
      pattern = PasswordComplexityRegex
    End If
    Dim patternRegex As Match = Regex.Match(pass, pattern)
    'In this case it checks that the length of the password is >= to 12
    If (IsDBNull(MinimunPasswordLenght) Or MinimunPasswordLenght = 0) Then
       MinimunPasswordLenght = 12
    End If
    Return (patternRegex.Success And pass.Length >= MinimunPasswordLenght)
End Function

关键是你总是测试你的Regex,它比有些想象的要复杂一点。

现在使用此功能验证您的密码并确定是否继续。类似的东西:

If Not validatePassword(txtNewPassword.Text) Then
  MsgBox("Password need to be...", vbCritical, "Password not in compliance...")
End If

您应该允许包括Unicode在内的所有字符,并且不应该限制超出严格必要的长度,例如,如果MySQL限制它。你应该鼓励使用字母,数字,大写等组合。

Nandostyle