1. 程式人生 > >密碼驗證,密碼強度正則表示式

密碼驗證,密碼強度正則表示式

原文地址:http://blog.sina.com.cn/s/blog_46ee420b0100yi3g.html

注:還未驗證- -,先記錄下來

當用戶登入網站時,一般要求使用者提供登入該網站的使用者名稱稱和密碼。從某種意義上說,密碼的複雜程度越高,使用者的資訊保安性越高。因此,很多網站在註冊使用者資訊或修改使用者密碼時,往往會提供一個密碼強度的說明,從而提醒使用者使用高強度的密碼。

目前來說,密碼字元可以分為3種:數字、字母和特殊字元(即除數字、字母之外的字元)。使用者密碼包含上述3種字元種的種類越多,密碼的安全性越高。使用者密碼只含其中一種的安全性是最低的,如123455abcdef等。其次是含上述

2種字元的密碼,如123abc[email protected]#等。密碼強度最好的是:包含上述3種字元,如[email protected]#

注意:本小節中的特殊字元包括`-=[];',./~!@#$%^&*()_+|?><":{}字元。

  1.只包含數字的密碼驗證

  如果密碼中只包含數字,那麼該密碼是非常簡單。當然,它的安全性也相對較差。以下正則表示式能夠驗證只包含數字的密碼。

d+68

該型別密碼的安全性隨著密碼的長度增加而增加。密碼長度越大,它的安全性越高。以下正則表示式能夠驗證長度至少為

6的、只包含數字的密碼。

d{6,}69

  2.只包含字母的密碼驗證

  如果密碼中只包含字母,那麼該密碼是非常簡單。當然,它的安全性也相對較差。以下正則表示式能夠驗證只包含字母的密碼。

[a-zA-Z]+70

該型別密碼的安全性隨著密碼的長度增加而增加。密碼長度越大,它的安全性越高。以下正則表示式能夠驗證長度至少為6的、只包含字母的密碼。

[a-zA-Z]{6,}71

  3.只包含特殊字元的密碼驗證

  如果密碼中只包含特殊字元,那麼該密碼是非常簡單。當然,它的安全性也相對較差。以下正則表示式能夠驗證只包含特殊字元的密碼。

[-`=\[];',./[email protected]

#$%^&*()_+|{}:"<>?]+72

  正則表示式(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),結果如圖所示。

密碼驗證,密碼強度正則表示式 - 劍血 - 碎片記憶