密碼驗證,密碼強度正則表示式
原文地址:http://blog.sina.com.cn/s/blog_46ee420b0100yi3g.html
注:還未驗證- -,先記錄下來
當用戶登入網站時,一般要求使用者提供登入該網站的使用者名稱稱和密碼。從某種意義上說,密碼的複雜程度越高,使用者的資訊保安性越高。因此,很多網站在註冊使用者資訊或修改使用者密碼時,往往會提供一個密碼強度的說明,從而提醒使用者使用高強度的密碼。
目前來說,密碼字元可以分為3種:數字、字母和特殊字元(即除數字、字母之外的字元)。使用者密碼包含上述3種字元種的種類越多,密碼的安全性越高。使用者密碼只含其中一種的安全性是最低的,如123455、abcdef等。其次是含上述
注意:本小節中的特殊字元包括`、-、=、、[、]、;、'、,、.、/、~、!、@、#、$、%、^、&、*、(、)、_、+、|、?、>、<、"、:、{和}字元。
1.只包含數字的密碼驗證
如果密碼中只包含數字,那麼該密碼是非常簡單。當然,它的安全性也相對較差。以下正則表示式能夠驗證只包含數字的密碼。
d+(68)
該型別密碼的安全性隨著密碼的長度增加而增加。密碼長度越大,它的安全性越高。以下正則表示式能夠驗證長度至少為
d{6,}(69)
2.只包含字母的密碼驗證
如果密碼中只包含字母,那麼該密碼是非常簡單。當然,它的安全性也相對較差。以下正則表示式能夠驗證只包含字母的密碼。
[a-zA-Z]+(70)
該型別密碼的安全性隨著密碼的長度增加而增加。密碼長度越大,它的安全性越高。以下正則表示式能夠驗證長度至少為6的、只包含字母的密碼。
[a-zA-Z]{6,}(71)
3.只包含特殊字元的密碼驗證
如果密碼中只包含特殊字元,那麼該密碼是非常簡單。當然,它的安全性也相對較差。以下正則表示式能夠驗證只包含特殊字元的密碼。
[-`=\[];',./[email protected]
正則表示式(72)解釋:
q\表示字元。
q[表示字元[。
q]表示字元]。
q其他的每一個字元就表示字元本身。
該型別密碼的安全性隨著密碼的長度增加而增加。密碼長度越大,它的安全性越高。以下正則表示式能夠驗證長度至少為6的、只包含特殊字元的密碼。
[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]{6,}(73)
使用工具Regex Tester測試正則表示式(73),結果如圖4.34所示。
4.當且僅當含數字和字母的密碼驗證
如果密碼當且僅當包含數字和字母,那麼該密碼的強度是中等強度。當然,它的安全性一般。以下正則表示式能夠驗證當且僅當包含數字和字母的密碼。
[da-zA-Z]*d+[a-zA-Z]+[da-zA-Z]*(74)
正則表示式(74)解釋:
d匹配長度至少1的、由數字組成的字串。
[a-zA-Z]+匹配長度至少1的、由字母組成的字串。
[da-zA-Z]*匹配空字串,或者長度至少1的、由數字或字母組成的字串。
d+[a-zA-Z]+保證密碼既包含了數字又包含特殊字元。
使用工具Regex Tester測試正則表示式(74),結果如圖所示。
5.當且僅當含數字和特殊字元的密碼驗證
如果密碼當且僅當包含數字和特殊字元,那麼該密碼的強度是中等強度。當然,它的安全性一般。以下正則表示式能夠驗證當且僅當包含數字和特殊字元的密碼。
[-d`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]*d+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+[-d`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]*(75)
正則表示式(75)解釋:
字元類[-d`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+:d表示任意數字;\表示字元;[表示字元[;]表示字元];其他的每一個字元就表示字元本身。該字元類可以匹配數字或者特殊字元。
d+匹配最小長度為1的、由數字組成的字串。
[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+匹配最小長度為1的、由特殊字元組成的字串。
d+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+保證密碼既包含了數字又包含特殊字元。
使用工具Regex Tester測試正則表示式(75),結果如圖所示。
6.當且僅當包含字母和特殊字元的密碼驗證
如果密碼當且僅當包含字母和特殊字元,那麼該密碼的強度是中等強度。當然,它的安全性一般。以下正則表示式能夠驗證只包含字母和特殊字元的密碼。
[-a-zA-Z`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]*[a-zA-Z]+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+[-a-zA-Z`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]*(76)
正則表示式(76)解釋:
字元類[-a-zA-Z`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+:a-z表示小寫字母;A-Z表示大寫字母;\表示字元;[表示字元[;]表示字元];其他的每一個字元就表示字元本身。該字元類可以匹配字母或者特殊字元。
[a-zA-Z]+匹配最小長度為1的、由字母組成的字串。
[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+匹配最小長度為1的、由特殊字元組成的字串。
[a-zA-Z]+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+保證密碼既包含了字母又包含特殊字元。
使用工具Regex Tester測試正則表示式(76),結果如圖所示。
7.當且僅當包含數字、字母和特殊字元的密碼驗證
如果密碼當且僅當包含數字、字母和特殊字元,那麼該密碼的強度是高強度。當然,它的安全性相對比較好。以下正則表示式能夠驗證當且僅當包含數字、字母和特殊字元的密碼。
[-da-zA-Z`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]*
(
(d+[a-zA-Z]+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+)#數字開頭
|(d+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+[a-zA-Z]+) #數字開頭
|([a-zA-Z]+d+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+) #字母開頭
|([a-zA-Z]+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+d+) #字母開頭
|([-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+d+[a-zA-Z]+) #特殊字元開頭
|([-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+[a-zA-Z]+d+) #特殊字元開頭
)
[-da-zA-Z`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]*(77)
正則表示式(77)解釋:
d+匹配最小長度為1的、由數字組成的字串。
[a-zA-Z]+匹配最小長度為1的、由字母組成的字串。
[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+匹配最小長度為1的、由特殊字元組成的字串。
d+[a-zA-Z]+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+匹配型如“數字+字母+特殊字元”型別的字串。
(d+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+[a-zA-Z]+)匹配型如“數字+特殊字元+字母”型別的字串。
[a-zA-Z]+d+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+匹配型如“字母+數字+特殊字元”型別的字串。
[a-zA-Z]+[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+d+匹配型如“字母+特殊字元+數字”型別的字串。
[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+d+[a-zA-Z]+匹配型如“特殊字元+數字+字母”型別的字串。
[-`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]+[a-zA-Z]+d+匹配型如“特殊字元+字母+數字”型別的字串。
字元類[-da-zA-Z`=\[];',./[email protected]#$%^&*()_+|{}:"<>?]*:d表示任意數字;a-z表示小寫字母;A-Z表示大寫字母;\表示字元;[表示字元[;]表示字元];其他的每一個字元就表示字元本身。該字元類可以匹配數字、字母或者特殊字元。
使用工具Regex Tester測試正則表示式(77),結果如圖所示。