密码验证,密码强度正则表达式_密码强度校验正则_Rico_Wuxr的博客-程序员宅基地

技术标签: 密码  java  正则表达式  

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


注:还未验证- -,先记录下来


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

目前来说,密码字符可以分为3种:数字、字母和特殊字符(即除数字、字母之外的字符)。用户密码包含上述3种字符种的种类越多,密码的安全性越高。用户密码只含其中一种的安全性是最低的,如123455abcdef等。其次是含上述2种字符的密码,如123abc123!@#等。密码强度最好的是:包含上述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),结果如图所示。

 

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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/godwillcry/article/details/47754905

智能推荐

GNS3安装与SecureCRT连接--包换软件_gns3securecrt下载_阢Lara的博客-程序员宅基地

下载完软件后GNS3需要载入镜像SecureCRT需要破解将两者连接GNS3\SecureCRT下载:https://download.csdn.net/download/qq_45847111/14951997GNS3镜像:https://download.csdn.net/download/qq_45847111/149520061.GNS3安装https://jingyan.baidu.com/article/48b37f8d1c70fb1a6464888d.html2.Secu_gns3securecrt下载

如何在浏览器上使用Octotree插件树形地展示Github项目代码?-程序员宅基地

0. 写在前面 转载自http://blog.csdn.net/ouyang_peng/article/details/52973274 在github上看项目时,项目层次比较多时有时想看点东西,确实很难翻,然后听说了这个Octotree插件,根据这位博客提供的做法,确实弄出来了。 前言最近有个同事看到我打开Github项目时,浏览器上的展示效果是树形的,于是他问我这个是什么浏览器插件,

LCD Introduction_introduction to graphics and lcd technologies-程序员宅基地

了解LCD 基础知识1.Introduction  LCD按驱动方式分为:被动矩阵式、主动矩阵式。被动矩阵式:TN-LCD(TwistedNematic-LCD,扭曲向列LCD)、STN—LCD(SuperTN-LCD,超扭曲向列LCD)和DSTN-LCD(Doublelayer STN-LCD,双层超扭曲向列LCD)。主动矩阵式:目前应用比较广泛的是TFT-LCD。2.LCD ..._introduction to graphics and lcd technologies

我觉得编程的人,做事不能半途而废-程序员宅基地

我是一个忠实诚信,讲原则,说到做到,决不推卸责任的人;有自制力,做事情始终坚持有始有终,从不半途而废;肯学习,有问题不逃避,愿意虚心向他人学习;自信但不自负,不以自我为中心;愿意以谦虚态度赞扬接纳优越者、权威者;会用100%的热情和精力投入到工作中;平易近人。为人诚恳,性格开朗,积极进取,适应力强、勤奋好学、脚踏实地,有较强的团队精神,工作积极进取,态度认真。在校期间,曾多次利用课余时间兼职,

CentOS7下安装配置Elasticsearch-6.5.4,ik分词器-程序员宅基地

系统环境Java 8或者以上版本,并配置好环境变量,关于如何在CentOS 7下安装jdk及配置环境变量这里不做赘述。下载安装包wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz解压文件下载完ES的源码包后,使用tar命令解压安装包,并复制到/opt/elasticsearch目录下,重命名为elasticsearch,如下所示:#进入optcd /opt#

随便推点

面试题:机器学习_包外数据权重_あずにゃん的博客-程序员宅基地

日萌社人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)说说你对偏差与方差、过拟合与欠拟合的理解关于偏差、方差可以通过如下图进行对比:1 方差、偏差和噪声之间区别 方差: 预测值的平均值 方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即 刻画了数据扰动所造成的影响 偏差: 真实值和预测值之间的差别 偏差度量了学习算法的期望预测与真实结果的偏离程序, 即 刻画_包外数据权重

数组找数寻找下标-程序员宅基地

#include&lt;stdio.h&gt;void main() { int a[10]={1,2,3,4,5,6,7,8,9,10},i,t; scanf(“%d”,&amp;t); for(i=0;i&lt;=9;i++) if(a[i]==t) break; if(i==10) ...

《深入理解 Java 虚拟机》读书笔记:线程安全与锁优化_虚拟机中进程加锁和解锁的目的是什么-程序员宅基地

正文一、线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。1、Java 语言中的线程安全按线程安全的“安全程度”由强至弱排序,可以将多个线程的共享数据分为 5 类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。(1)不可..._虚拟机中进程加锁和解锁的目的是什么

吴恩达机器学习——exercise5_吴恩达机器学习exercise5-程序员宅基地

Regularized Linear Regression and Bias v.s. Variance实现正则化线性回归模型,并且学习不同方差、偏差下的模型特性。已有脚本:ex5.m-Octave / MATLAB的引导脚本ex5data1.mat-数据集featureNormalize.m-归一化函数fmincg.m-函数最小化例程(类似于fminunc)plotFit.m-绘制多..._吴恩达机器学习exercise5

协程[greenlet模块,Gevent模块]_greenlet传参-程序员宅基地

必须在只有一个单线程里实现并发修改共享数据不需加锁用户程序里自己保存多个控制流的上下文栈对于实现协程来说,要实现保存状态加切换 并且需要在遇到 IO 时能够切换: 实例化一个协程对象spawn括号内第一个参数是函数名,如eat,后面可以有多个参数,可以是位置实参或关键字实参,都是传给函数eat的g1.join(): 等待g1结束g2.join(): 等待g2结束: 将上述两部合成一步g1.value: 拿到func1的返回值。......_greenlet传参

Android_UI:PreferenceActivity PreferenceFragment-程序员宅基地

说明 app都有设置界面,一般都是我们自定义的,其实Android已经为我们提供了类PreferenceActivity、PreferenceFragment来实现设置界面。 使用 PreferenceActivity继承ListActivity,所以多个Preference可以像ListView那样滑动。 值是存放在SharedPreferences而不是Preference分类Pref