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 相关文章推荐
javascript options属性集合操作代码
Dec 28 Javascript
select 控制网页内容隐藏于显示的实现代码
May 25 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
Mar 06 Javascript
js实现checkbox全选和反选示例
May 01 Javascript
JavaScript获取路径设计源码
May 22 Javascript
JQuery悬停控制图片轮播——代码简单
Aug 05 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
Mar 11 Javascript
浅析js的模块化编写 require.js
Dec 07 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
vue父组件给子组件的组件传值provide inject的方法
Oct 23 Javascript
前端监听websocket消息并实时弹出(实例代码)
Nov 27 Javascript
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
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+mysql留言本源码
2009/11/11 PHP
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
深入理解Django的中间件middleware
2018/03/14 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
python读写csv文件的方法
2019/08/13 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
开展批评与自我批评发言稿
2014/10/16 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
十七岁的单车观后感
2015/06/12 职场文书
积极心理学课程心得体会
2016/01/22 职场文书