CheckPassStrength.js
3.02 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/******************************************************************************************
* 检查密码强度
******************************************************************************************/
checkPasswordLevel = function(strPassword)
{
var result = 0;
if ( strPassword.length == 0)
result += 0;
else if ( strPassword.length<8 && strPassword.length >0 )
result += 5;
else if (strPassword.length>10)
result += 25;
else
result += 10;
//check letter
var bHave = false;
var bAll = false;
var capital = strPassword.match(/[A-Z]{1}/);//找大写字母
var small = strPassword.match(/[a-z]{1}/);//找小写字母
if ( capital == null && small == null )
{
result += 0; //没有字母
bHave = false;
}
else if ( capital != null && small != null )
{
result += 20;
bAll = true;
}
else
{
result += 10;
bAll = true;
}
//alert("检查字母:"+result);
//检查数字
var bDigi = false;
var digitalLen = 0;
for ( var i=0; i<strPassword.length; i++)
{
if ( strPassword.charAt(i) <= '9' && strPassword.charAt(i) >= '0' )
{
bDigi = true;
digitalLen += 1;
//alert(strPassword[i]);
}
}
if ( digitalLen==0 )//没有数字
{
result += 0;
bDigi = false;
}
else if (digitalLen>2)//2个数字以上
{
result += 20 ;
bDigi = true;
}
else
{
result += 10;
bDigi = true;
}
//alert("数字个数:" + digitalLen);
//alert("检查数字:"+result);
//检查非单词字符
var bOther = false;
var otherLen = 0;
for (var i=0; i<strPassword.length; i++)
{
if ( (strPassword.charAt(i)>='0' && strPassword.charAt(i)<='9') ||
(strPassword.charAt(i)>='A' && strPassword.charAt(i)<='Z') ||
(strPassword.charAt(i)>='a' && strPassword.charAt(i)<='z'))
continue;
otherLen += 1;
bOther = true;
}
if ( otherLen == 0 )//没有非单词字符
{
result += 0;
bOther = false;
}
else if ( otherLen >1)//1个以上非单词字符
{
result +=25 ;
bOther = true;
}
else
{
result +=10;
bOther = true;
}
//alert("检查非单词:"+result);
//检查额外奖励
if ( bAll && bDigi && bOther)
result += 5;
else if (bHave && bDigi && bOther)
result += 3;
else if (bHave && bDigi )
result += 2;
//alert("检查额外奖励:"+result);
var level = "";
//根据分数来算密码强度的等级
if ( result >=80 )
level = "rank r7";
else if ( result>=70)
level = "rank r6";
else if ( result>=60)
level = "rank r5";
else if ( result>=50)
level = "rank r4";
else if ( result>=40)
level = "rank r3";
else if ( result>20)
level = "rank r2";
else if ( result>0)
level = "rank r1";
else
level = "rank r0";
// alert("return:"+level);
return level.toString();
}
/******************************************************************************************
* 设置密码强度样式
******************************************************************************************/
setPasswordLevel = function(passwordObj, levelObj)
{
var level = "rank r0";
level = checkPasswordLevel(passwordObj.value);
levelObj.className = level;
//alert("level"+level);
}