密码强度评分规则
/*最后的評分標準:>= 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
總結
- 上一篇: 监控磁盘并发mail通知
- 下一篇: **CI中使用IN查询(where_in