密码复杂度校验函数封装
当建立一个文件,封装校验函数
export function getPwdSecurityLevel(pwdStr) {
let VERY_WEAK = '非常弱'
let WEAK = '弱'
let AVERAGE = '一般'
let STRONG = '强'
let VERY_STRONG = '非常强'
let SECURE = '安全'
let VERY_SECURE = '非常安全'
let result = VERY_WEAK;
if (pwdStr == null) {
return result
}
let grade = 0
let index = 0
let pwdChars = pwdStr.split("")
let numIndex = 0;
let sLetterIndex = 0;
let lLetterIndex = 0;
let symbolIndex = 0;
// 数字 48-57 A-Z 65 - 90 a-z 97 - 122 !"#$%&'()*+,-./ (ASCII码:33~47)
// :;<=>?@ (ASCII码:58~64) [\]^_` (ASCII码:91~96) {|}~
// (ASCII码:123~126)
for (let i = 0; i < pwdStr.length; i++) {
const ascll = pwdStr.charCodeAt(i);
if (ascll >= 48 && ascll <= 57) {
numIndex++;
} else if (ascll >= 65 && ascll <= 90) {
lLetterIndex++;
} else if (ascll >= 97 && ascll <= 122) {
sLetterIndex++;
} else if ((ascll >= 33 && ascll <= 47)
|| (ascll >= 58 && ascll <= 64)
|| (ascll >= 91 && ascll <= 96)
|| (ascll >= 123 && ascll <= 126)) {
symbolIndex++;
}
}
// for (let i = 0; i < pwdChars.length; i++) {
// const ascll = pwdChars.charCodeAt(i);
// if (ascll >= 48 && ascll <= 57) {
// numIndex++;
// } else if (ascll >= 65 && ascll <= 90) {
// lLetterIndex++;
// } else if (ascll >= 97 && ascll <= 122) {
// sLetterIndex++;
// } else if ((ascll >= 33 && ascll <= 47)
// || (ascll >= 58 && ascll <= 64)
// || (ascll >= 91 && ascll <= 96)
// || (ascll >= 123 && ascll <= 126)) {
// symbolIndex++;
// }
// }
//一、密码长度: 5 分: 小于等于 4 个字符 10 分: 5 到 7 字符 25 分: 大于等于 8 个字符
if (pwdChars.length <= 4) {
index = 5;
} else if (pwdChars.length <= 7) {
index = 10;
} else {
index = 25;
}
grade += index;
//admin@123
//二、字母: 0 分:没有字母,10 分:全都是小(大)写字母,20 分:大小写混合字母
if (lLetterIndex === 0 && sLetterIndex === 0) {
index = 0;
} else if (lLetterIndex !== 0 && sLetterIndex !== 0) {
index = 20;
} else {
index = 10;
}
grade += index;
//三、数字: 0 分: 没有数字, 10 分: 1 个数字, 20 分: 大于 1 个数字
if (numIndex === 0) {
index = 0;
} else if (numIndex === 1) {
index = 10;
} else {
index = 20;
}
grade += index;
// 四、符号: 0 分: 没有符号 10 分: 1 个符号 25 分: 大于 1 个符号
if (symbolIndex === 0) {
index = 0;
} else if (symbolIndex === 1) {
index = 10;
} else {
index = 25;
}
grade += index;
// 五、奖励: 2 分: 字母和数字, 3 分: 字母、数字和符号, 5 分: 大小写字母、数字和符号
if ((sLetterIndex !== 0 || lLetterIndex !== 0) && numIndex !== 0) {
index = 2;
} else if ((sLetterIndex !== 0 || lLetterIndex !== 0) && numIndex !== 0
&& symbolIndex !== 0) {
index = 3;
} else if (sLetterIndex !== 0 && lLetterIndex !== 0 && numIndex !== 0
&& symbolIndex !== 0) {
index = 5;
}
else index = 0;
grade += index;
//最后的评分标准: >= 90: 非常安全 >= 80: 安全(Secure) >=
// 50: 一般(Average) >= 25: 弱(Weak) >= 0: 非常弱
if (grade >= 90) {
result = VERY_SECURE;
} else if (grade >= 80) {
result = SECURE;
} else if (grade >= 70) {
result = VERY_STRONG;
} else if (grade >= 60) {
result = STRONG;
} else if (grade >= 50) {
result = AVERAGE;
} else if (grade >= 25) {
result = WEAK;
} else if (grade >= 0) {
result = VERY_WEAK;
}
return {result,grade};
}
需要使用校验密码处应用函数就可以啦!!!