/*最后的评分标准:>= 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