zoukankan      html  css  js  c++  java
  • 密码验证,密码强度正则表达式

    当用户登录网站时,一般要求用户提供登录该网站的用户名称和密码。从某种意义上说,密码的复杂程度越高,用户的信息安全性越高。因此,很多网站在注册用户信息或修改用户密码时,往往会提供一个密码强度的说明,从而提醒用户使用高强度的密码。

    目前来说,密码字符可以分为3种:数字、字母和特殊字符(即除数字、字母之外的字符)。用户密码包含上述3种字符种的种类越多,密码的安全性越高。用户密码只含其中一种的安全性是最低的,如123455、abcdef等。其次是含上述2种字符的密码,如123abc、123!@#等。密码强度最好的是:包含上述3种字符,如123QAZ!@#。

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

      1.只包含数字的密码验证

      如果密码中只包含数字,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含数字的密码。

    \d+                                                                                 (68)

    该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含数字的密码。

    \d{6,}                                                                     (69)

      2.只包含字母的密码验证

      如果密码中只包含字母,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含字母的密码。

    [a-zA-Z]+                                                                      (70)

    该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含字母的密码。

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

      3.只包含特殊字符的密码验证

      如果密码中只包含特殊字符,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含特殊字符的密码。

    [-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+                                     (72)

      正则表达式(72)解释:

    q      \\表示字符\。

    q      \[表示字符[。

    q      \]表示字符]。

    q      其他的每一个字符就表示字符本身。

      该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含特殊字符的密码。

    [-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]{6,}                              (73)

      使用工具Regex Tester测试正则表达式(73),结果如图4.34所示。

    密码验证,密码强度正则表达式  - 剑血 - 碎片记忆

    4.4.5 密码验证(2)

      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`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[-\d`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*                                (75)

      正则表达式(75)解释:

          字符类[-\d`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+:\d表示任意数字;\\表示字符\;\[表示字符[;\]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配数字或者特殊字符。

          \d+匹配最小长度为1的、由数字组成的字符串。

          [-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

          \d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+保证密码既包含了数字又包含特殊字符。

      使用工具Regex Tester测试正则表达式(75),结果如图所示。

    密码验证,密码强度正则表达式  - 剑血 - 碎片记忆

    6.当且仅当包含字母和特殊字符的密码验证

      如果密码当且仅当包含字母和特殊字符,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证只包含字母和特殊字符的密码。

    [-a-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[-a-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*            (76)

      正则表达式(76)解释:

          字符类[-a-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+:a-z表示小写字母;A-Z表示大写字母;\\表示字符\;\[表示字符[;\]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配字母或者特殊字符。

          [a-zA-Z]+匹配最小长度为1的、由字母组成的字符串。

          [-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

          [a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+保证密码既包含了字母又包含特殊字符。

      使用工具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]+) #特殊字符开头

    |([-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+\d+) #特殊字符开头

    )

    [-\da-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*                         (77)

      正则表达式(77)解释:

          \d+匹配最小长度为1的、由数字组成的字符串。

          [a-zA-Z]+匹配最小长度为1的、由字母组成的字符串。

         [-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

          \d+[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配型如“数字+字母+特殊字符”类型的字符串。

          (\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+)匹配型如“数字+特殊字符+字母”类型的字符串。

          [a-zA-Z]+\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配型如“字母+数字+特殊字符”类型的字符串。

          [a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+匹配型如“字母+特殊字符+数字”类型的字符串。

          [-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+[a-zA-Z]+匹配型如“特殊字符+数字+字母”类型的字符串。

          [-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+\d+匹配型如“特殊字符+字母+数字”类型的字符串。

          字符类[-\da-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*:\d表示任意数字;a-z表示小写字母;A-Z表示大写字母;\\表示字符\;\[表示字符[;\]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配数字、字母或者特殊字符。

      使用工具Regex Tester测试正则表达式(77),结果如图所示。

    密码验证,密码强度正则表达式  - 剑血 - 碎片记忆

  • 相关阅读:
    MFC对话框编程四:输入焦点的传递
    lua笔记 一个C++调用lua函数的类的实现
    [置顶] 设计模式之享元模式
    扩展实现PHP Benchmark
    TLD如何运行OpenTLD(TLD_HY20121127)
    [Oracle] Kill Session 经验总结
    php 该如何获取从百度搜索进入网站的关键词
    php+js实现百度地图多点标注的方法
    laraveladmin 报错 Disk [admin] not configured, please add a disk config in `config/filesystems.php`....
    PHP获取当前页面的url
  • 原文地址:https://www.cnblogs.com/church/p/2851707.html
Copyright © 2011-2022 走看看