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 相关文章推荐
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
基于jquery实现的省市区级联无ajax
Sep 24 Javascript
弹出最简单的模式化遮罩层的js代码
Dec 04 Javascript
详解JavaScript基于面向对象之创建对象(1)
Dec 10 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
Feb 25 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
Oct 13 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
原生JS发送异步数据请求
Jun 08 Javascript
vuex actions传递多参数的处理方法
Sep 18 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 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
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
JavaScript中的作用域链和闭包
2012/06/30 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
js比较日期大小的方法
2015/05/12 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
React中的render何时执行过程
2018/04/13 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
jQuery操作cookie的示例代码
2019/06/05 jQuery
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python验证码识别的实例详解
2016/09/09 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Django 多环境配置详解
2019/05/14 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python初步实现word2vec操作
2020/06/09 Python
门卫工作岗位职责
2013/12/17 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
火车的故事教学反思
2014/02/11 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
见习报告格式要求
2014/11/04 职场文书
离婚案件原告代理词
2015/05/23 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS