javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)


Posted in Javascript onMay 18, 2010

前言:

密码强度是一个很普遍的功能,比较简单,主要是怎么制定这个强度规则。现在需要升级密码强度的验证,以前的验证比较简单,现在已经不能满足需求了,现在需要可灵活变化并有多级别可配置选择的一个密码强度验证,所以就设计了下面这个东东。在设计前也参考了下比较成熟的强度规则,大同小异,不外乎都采取了打分的机制来控制密码强度规则,这样可配置性高,灵活。本来想直接拿来用的,但是发现都比较旧,有些不太适宜公司开发的需求,可能这个东西比较简单吧,所以也没什么人去更新和写新的代码,所以还是自己动手设计了规则和写了代码。

实现:

原理:

采用打分的机制,打分分为3类(基础分、加分、减分),先求出基础分,在计算加分的部分,最后减去要扣除的分数就为最终总分。


规则:

密码可输入类型(字符,字母大写,字母小写,特殊字符)。

基础分为,密码长度,一个长度为一分,大于18个字符都为18分;密码里面包含一种可输入类型,基础分加4分。

加分为,一种密码可输入类型的总数量大于等于2个,加分2分,如果总数量大于等于5,加分4分。

减分为,如果有连续重复的单个种类字符,则重复一次减1分。

总分50分。

0~10分:不合格(弱)

11~20分:一般

21~30分:中

31~40分:强

41~50分:安全

*分数范围可以自由调整和搭配,其实整个打分规则都可以根据需要修改

code:

function passwordGrade(pwd) { 
var score = 0; 
var regexArr = ['[0-9]', '[a-z]', '[A-Z]', '[\\W_]']; 
var repeatCount = 0; 
var prevChar = ''; 
//check length 
var len = pwd.length; 
score += len > 18 ? 18 : len; 
//check type 
for (var i = 0, num = regexArr.length; i < num; i++) { if (eval('/' + regexArr[i] + '/').test(pwd)) score += 4; } 
//bonus point 
for (var i = 0, num = regexArr.length; i < num; i++) { 
if (pwd.match(eval('/' + regexArr[i] + '/g')) && pwd.match(eval('/' + regexArr[i] + '/g')).length >= 2) score += 2; 
if (pwd.match(eval('/' + regexArr[i] + '/g')) && pwd.match(eval('/' + regexArr[i] + '/g')).length >= 5) score += 2; 
} 
//deduction 
for (var i = 0, num = pwd.length; i < num; i++) { 
if (pwd.charAt(i) == prevChar) repeatCount++; 
else prevChar = pwd.charAt(i); 
} 
score -= repeatCount * 1; 
return score; 
}

打分例子:
1111=7分
1@dA=20分
111111=9分
abcdef1=19分
abcd12=18分
abc123=18分
ab123A=22分
aA12j@=26分
aasdfkjjsjjj=16分
111111111dsfskjjkjeh=25分
1111dsfskjjkjeh=25分
1231kb#4ktSF!T@s^j#hkWH=50分
skhk3293ks=24分
sfh#4hHdk=29分
bure12#sk=27分
a@s@dk23=26分
bruceLi@09kt=34分
ce@Li1=24分
END
到这里就结束了,欢迎大家一起来讨论这个打分的规则,大家也可以直接给出自己写好的规则和代码,这样方便大家研究和交流,代码是需要不断维护和更新的,这样我们才能站在前人的脚本上面继续前进。
Javascript 相关文章推荐
自定义的一个简单时尚js下拉选择框
Nov 20 Javascript
javascript中解析四则运算表达式的算法和示例
Aug 11 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
手机端转盘抽奖代码分享
Sep 10 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
Jul 08 Javascript
微信小程序实现手势滑动效果
Aug 26 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
详细分析Node.js 多进程
Jun 22 Javascript
JS request函数 用来获取url参数
May 17 #Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
May 17 #Javascript
JQuery中的ready函数冲突的解决方法
May 17 #Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 #Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 #Javascript
jQuery 学习第五课 Ajax 使用说明
May 17 #Javascript
jQuery实现的立体文字渐变效果
May 17 #Javascript
You might like
php5中类的学习
2008/03/28 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
超清晰的document对象详解
2007/02/27 Javascript
js获取url参数的使用扩展实例
2007/12/29 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
深入理解python中的闭包和装饰器
2016/06/12 Python
pandas实现选取特定索引的行
2018/04/20 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
python调用摄像头的示例代码
2020/09/28 Python
用python进行视频剪辑
2020/11/02 Python
新农村建设标语
2014/06/24 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
2014离婚协议书范文
2014/09/10 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
Pandas数据类型之category的用法
2021/06/28 Python
python中取整数的几种方法
2021/11/07 Python