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

前言:

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

实现:

原理:

采用打分的机制,打分分为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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,946评论 18 399
  • @转自GitHub 介绍js的基本数据类型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou阅读 4,937评论 0 0
  • 影子倒了阅读 2,744评论 6 7
  • “今夜月明入尽望,不知秋思落谁家。”中秋没回家,漂泊的时光里,除了家,还会思念那片故土,好久没有听到熟悉的乡音。一...
    阿颖sxcw阅读 3,570评论 2 0
  • 刚才我用铝盆放在地上洗脚,可能发出一些声音,妈妈躺在床上看电视,又嫌我吵,就说你不能挪挪盆?真是的,你经常将锅盖“...
    海鱼缘阅读 1,410评论 0 0