判断密码强度

在填写密码时怎么判断密码的强度. 原理很简单, 类型越多 密码长度越长,则密码强度越高, 基于这样的原则, 现实现如下:

正文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 计算二进制中1出现的次数
function bit_count(n) {
var c = 0;
while (n > 0){
if ((n & 1) == 1){
++c;
}
n = n >> 1;
}
return c;
}
// 检测用户提供的字符串包含几种类型(数字、大写字母、小写字母、特殊字符)
function total_mode(str) {
var len = str.length;
var mode = 0;
for (var i = 0; i < len; i++) {
mode = mode | char_type(str[i].charCodeAt());
};
return bit_count(mode);
}
// 测试用户提供的密码强度
// 返回值 -- 弱:0,中:1,高:2
function check_strength(str) {
var len = str.length;
var mode = total_mode(str);
if (mode == 1){
return 0;
}
if (mode == 2 || (len > 6 && len <= 8)){
return 1;
}
if (len > 8 && (mode == 3 || mode == 4)){
return 2;
}
return 0;
// 字符串类型1,属于弱强度密码
// 字符串类型2 或 密码长度大于6且小于8,属于中强度密码
// 字符串类型3或4 且 密码长度大于8,属于高强度密码
}