检测密码是否能过强度检测(正则表达式检测)
/// 检测密码是否能过强度检测(正则表达式检测)
/// 要求密码长度最少8位最多25位,包含至少1个特殊字符,2个数字,2个大写字母和一些小写字母
/// </summary>
/// <param name="password">密码明文</param>
public static bool CheckPasswordStrangth(string username,string password) {
if (username.Equals(password,StringComparison.OrdinalIgnoreCase)
|| password.ToLower().Contains(username.ToLower())) {
return false;
}
return false;
}
string regexText = @"(?=^.{8,25}$)(?=(?:.*?\d){1})(?=.*[a-z])(?=(?:.*?[A-Z]){1})(?=(?:.*?[!@#$%*()_+^&}{:;?.]){1})(?!.*\s)[0-9a-zA-Z!@#$%*()_+^&]*$";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(regexText);
}
当用户登录网站时,一般要求用户提供登录该网站的用户名称和密码。从某种意义上说,密码的复杂程度越高,用户的信息安全性越高。因此,很多网站在注册用户信息或修改用户密码时,往往会提供一个密码强度的说明,从而提醒用户使用高强度的密码。
目前来说,密码字符可以分为3种:数字、字母和特殊字符(即除数字、字母之外的字符)。用户密码包含上述3种字符种的种类越多,密码的安全性越高。用户密码只含其中一种的安全性是最低的,如123455、abcdef等。其次是含上述2种字符的密码,如123abc、123!@#等。密码强度最好的是:包含上述3种字符,如123QAZ!@#。
注意:本小节中的特殊字符包括`、-、=、\、[、]、;、'、,、.、/、~、!、@、#、$、%、^、&、*、(、)、_、+、|、?、>、<、"、:、{和}字符。
1.只包含数字的密码验证
如果密码中只包含数字,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含数字的密码。
\d+
该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含数字的密码。
\d{6,}
2.只包含字母的密码验证
如果密码中只包含字母,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含字母的密码。
[a-zA-Z]+
该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含字母的密码。
[a-zA-Z]{6,}
3.只包含特殊字符的密码验证
如果密码中只包含特殊字符,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含特殊字符的密码。
[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+
正则表达式(72)解释:
q
q
q
q
该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含特殊字符的密码。
使用工具Regex Tester测试正则表达式(73),结果如图4.34所示。
4.当且仅当含数字和字母的密码验证
如果密码当且仅当包含数字和字母,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证当且仅当包含数字和字母的密码。
[\da-zA-Z]*\d+[a-zA-Z]+[\da-zA-Z]*
正则表达式(74)解释:
使用工具Regex Tester测试正则表达式(74),结果如图所示。
5.当且仅当含数字和特殊字符的密码验证
如果密码当且仅当包含数字和特殊字符,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证当且仅当包含数字和特殊字符的密码。
[-\d`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[-\d`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*
正则表达式(75)解释:
使用工具Regex Tester测试正则表达式(75),结果如图所示。
如果密码当且仅当包含字母和特殊字符,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证只包含字母和特殊字符的密码。
[-a-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[-a-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*
正则表达式(76)解释:
使用工具Regex Tester测试正则表达式(76),结果如图所示。
7.当且仅当包含数字、字母和特殊字符的密码验证
如果密码当且仅当包含数字、字母和特殊字符,那么该密码的强度是高强度。当然,它的安全性相对比较好。以下正则表达式能够验证当且仅当包含数字、字母和特殊字符的密码。
[-\da-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*
(
(\d+[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+)
|(\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+) #数字开头
|([a-zA-Z]+\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+) #字母开头
|([a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+) #字母开头
|([-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+[a-zA-Z]+) #特殊字符开头
)
正则表达式(77)解释:
使用工具Regex Tester测试正则表达式(77),结果如图所示。