/*最后的评分标准: >= 90: 非常安全 >= 80: 安全(Secure) >= 70: 非常强 >= 60: 强(Strong) >= 50: 一般(Average) >= 25: 弱(Weak) >= 0: 非常弱*/ function grade(passwd){ var grade=0; //判断密码是否存在 if(!passwd){ return grade; } var liHtml= $("#tips"); //判断是否属于弱密码 if(weakPasswd(passwd)){ grade=0; liHtml.append("<li>您的密码为弱密码,获得0分</li>"); return grade; } //判断长度。并给出分数 /*密码长度: 0 分: 小于等于 4 个字符 10 分: 5 到 7 字符 20 分: 大于8 个字符*/ //grade += passwd.length<=4?0:(passwd.length>8?20:10); if(passwd.length<=4){ grade +=0; liHtml.append("<li>您的密码长度小于或等于4位,获得0分</li>"); }else if (passwd.length>8){ grade+=20; liHtml.append("<li>您的密码长度大于8位,获得20分</li>"); }else{ grade+=10; liHtml.append("<li>您的密码长度介于5~~8位,获得10分</li>"); } //alert("密码长度:"+grade); /*字母: 0 分: 没有字母 10 分: 全都是小(大)写字母 20 分: 大小写混合字母*/ //grade += !passwd.match(/[a-z]/i)?0:(passwd.match(/[a-z]/) && passwd.match(/[A-Z]/)?20:10); if(!passwd.match(/[a-z]/i)){ grade+=0; liHtml.append("<li>您的密码不包含字母,获得0分</li>"); }else if (passwd.match(/[a-z]/)&& passwd.match(/[A-Z]/) ){ grade+=20; liHtml.append("<li>您的密码含有大小写混合字母,获得20分</li>"); }else{ grade+=10; liHtml.append("<li>您的密码只含有大写或小写字母,获得10分</li>"); } //alert("字母:"+grade); /*数字: 0 分: 没有数字 10 分: 1 个数字 15 分: 大于等于 3 个数字*/ //grade += !passwd.match(/[0-9]/)?0:(passwd.match(/[0-9]/g).length >= 3?15:10); if(!passwd.match(/[0-9]/)){ grade+=0; liHtml.append("<li>您的密码不包含数字,获得0分</li>"); }else if ((passwd.match(/[0-9]/g)).length >3){ grade+=15; liHtml.append("<li>您的密码含有3位以上的数字,获得15分</li>"); }else{ grade+=10; liHtml.append("<li>您的密码含有1~~3位数字,获得10分</li>"); } //alert("数字:"+grade); /*符号: 0 分: 没有符号 10 分: 1 个符号 20 分: 大于 1 个符号*/ //grade += !passwd.match(/\W/)?0:(passwd.match(/\W/g).length > 1?20:10); if(!passwd.match(/\W/)){ grade+=0; liHtml.append("<li>您的密码不包含特殊字符,获得0分</li>"); }else if ((passwd.match(/\W/g)).length > 1){ grade+=20; liHtml.append("<li>您的密码含有2位及以上的特殊字符,获得15分</li>"); }else{ grade+=10; liHtml.append("<li>您的密码含有1位特殊字符,获得10分</li>"); } //alert("符号:"+grade); /*字符重复 5 分:有重复字符 10分:无重复字符*/ //grade +=!passwd.match(/(.+)\1{2,}/gi)?10:5; if(!passwd.match(/(.+)\1{2,}/gi)){ grade+=10; liHtml.append("<li>您的密码不含有重复字符,获得10分</li>"); }else{ grade+=5; liHtml.append("<li>您的密码含有重复字符,获得5分</li>"); } //alert("字符重复:"+grade); /*奖励: 2 0 分: 只有字母或数字 5 分: 只有字母和数字 3 10 分: 字母、数字和符号 5 15 分: 大小写字母、数字和符号*/ //grade += !passwd.match(/[0-9]/) || !passwd.match(/[a-z]/i)?0:(!passwd.match(/\W/)?5:(!passwd.match(/[a-z]/) || !passwd.match(/[A-Z]/)?10:15)); if(!passwd.match(/[0-9]/) || !passwd.match(/[a-z]/i)){ grade+=0; liHtml.append("<li>鉴于您密码的复杂度,不给你的奖励分</li>"); } else if ( !passwd.match(/\W/)){ grade+=5; liHtml.append("<li>鉴于您密码的复杂度,给你的奖励5分</li>"); } else if (!passwd.match(/[a-z]/) || !passwd.match(/[A-Z]/)){ grade+=10; liHtml.append("<li>鉴于您密码的复杂度,给你的奖励10分</li>"); }else{ grade+=15; liHtml.append("<li>鉴于您密码的复杂度,给你的奖励15分</li>"); } //alert("奖励:"+grade); return grade; } function weakPasswd(password) { var i = (commonPasswords && commonPasswords.length) || 0, rank; while (i--) { if (password.toLowerCase() === commonPasswords[i]) { // rank = formatNumber(Math.ceil((i + 1) / 10) * 10); return true; } } return false; }
转载于:https://blog.51cto.com/qiangmzsx/1360891