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 toFixed() 方法
Apr 15 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
Oct 20 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
Oct 24 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
script标签属性用type还是language
Jan 21 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
Nov 24 Javascript
Vue应用部署到服务器的正确方式
Jul 15 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
Jul 03 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
JS正则表达式常见函数与用法小结
Apr 13 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
Aug 25 Javascript
vue实力踩坑之push当前页无效
Apr 10 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常用代码
2006/11/23 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
Python日期操作学习笔记
2008/10/07 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python实现猜数游戏
2020/03/27 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
python构造IP报文实例
2020/05/05 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
应届毕业生个人自我评价
2013/09/20 职场文书
学生感冒英文请假条
2014/02/04 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
阿里云日志过滤器配置日志服务
2022/04/09 Servers