密码强度检测
来源:互联网 发布:c语言 英文 编辑:程序博客网 时间:2024/04/29 11:42
“密码强度检测”这个功能挺实用,对用户输入的密码进行复杂程度的评估。所以就从网上找了很多类似的,我这边进行整理一下,写了一个PasswordStrength类
passwordstrength.js
//密码强度;
function PasswordStrength(showed)
{
this.showed = (typeof(showed) == "boolean")?showed:true;
this.styles = new Array();
this.styles[0] = {backgroundColor:"#EBEBEB",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #BEBEBE",borderBottom:"solid 1px #BEBEBE"};
this.styles[1] = {backgroundColor:"#FF4545",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #BB2B2B",borderBottom:"solid 1px #BB2B2B"};
this.styles[2] = {backgroundColor:"#FFD35E",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #E9AE10",borderBottom:"solid 1px #E9AE10"};
this.styles[3] = {backgroundColor:"#95EB81",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #3BBC1B",borderBottom:"solid 1px #3BBC1B"};
this.labels= ["弱","中","强"];
this.divName = "pwd_div_"+Math.ceil(Math.random()*100000);
this.minLen = 1;//
this.width = "200px";
this.height = "16px";
this.content = "";
this.selectedIndex = 0;
this.init();
}
PasswordStrength.prototype.init = function()
{
var s = '<table cellpadding="0" id="'+this.divName+'_table" cellspacing="0" style="width:'+this.width+';height:'+this.height+';">';
s += '<tr>';
for(var i=0;i<3;i++){
s += '<td id="'+this.divName+'_td_'+i+'" width="33%" align="center"><span style="font-size:1px"> </span><span id="'+this.divName+'_label_'+i+'" style="display:none;font-family: Courier New, Courier, mono;font-size: 12px;color: #000000;">'+this.labels[i]+'</span></td>';
}
s += '</tr>';
s += '</table>';
this.content = s;
if(this.showed)
{
document.write(s);
this.copyToStyle(this.selectedIndex);
}
}
PasswordStrength.prototype.copyToObject = function(o1,o2)
{
for(var i in o1)
{
o2[i] = o1[i];
}
}
PasswordStrength.prototype.copyToStyle = function(id)
{
this.selectedIndex = id;
for(var i=0;i<3;i++)
{
if(i == id-1)
{
this.$(this.divName+"_label_"+i).style.display = "inline";
}
else
{
this.$(this.divName+"_label_"+i).style.display = "none";
}
}
for(var i=0;i<id;i++)
{
this.copyToObject(this.styles[id],this.$(this.divName+"_td_"+i).style);
}
for(;i<3;i++)
{
this.copyToObject(this.styles[0],this.$(this.divName+"_td_"+i).style);
}
}
PasswordStrength.prototype.$ = function(s)
{
return document.getElementById(s);
}
PasswordStrength.prototype.setSize = function(w,h)
{
this.width = w;
this.height = h;
}
PasswordStrength.prototype.setMinLength = function(n)
{
if(isNaN(n))
{
return ;
}
n = Number(n);
if(n>1){
this.minLength = n;
}
}
PasswordStrength.prototype.setStyles = function()
{
if(arguments.length == 0)
{
return ;
}
for(var i=0;i<arguments.length && i < 4;i++)
{
this.styles[i] = arguments[i];
}
this.copyToStyle(this.selectedIndex);
}
PasswordStrength.prototype.write = function(s)
{
if(this.showed)
{
return ;
}
var n = (s == 'string') ? this.$(s) : s;
if(typeof(n) != "object")
{
return ;
}
n.innerHTML = this.content;
this.copyToStyle(this.selectedIndex);
}
PasswordStrength.prototype.update = function(s)
{
if(s.length < this.minLen)
{
this.copyToStyle(0);
return;
}
var ls = -1;
if (s.match(/[a-z]/ig))
{
ls++;
}
if (s.match(/[0-9]/ig))
{
ls++;
}
if (s.match(/(.[^a-z0-9])/ig))
{
ls++;
}
if (s.length < 6 && ls > 0)
{
ls--;
}
switch(ls)
{
case 0:
this.copyToStyle(1);
break;
case 1:
this.copyToStyle(2);
break;
case 2:
this.copyToStyle(3);
break;
default:
this.copyToStyle(0);
}
}
function PasswordStrength(showed)
{
this.showed = (typeof(showed) == "boolean")?showed:true;
this.styles = new Array();
this.styles[0] = {backgroundColor:"#EBEBEB",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #BEBEBE",borderBottom:"solid 1px #BEBEBE"};
this.styles[1] = {backgroundColor:"#FF4545",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #BB2B2B",borderBottom:"solid 1px #BB2B2B"};
this.styles[2] = {backgroundColor:"#FFD35E",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #E9AE10",borderBottom:"solid 1px #E9AE10"};
this.styles[3] = {backgroundColor:"#95EB81",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #3BBC1B",borderBottom:"solid 1px #3BBC1B"};
this.labels= ["弱","中","强"];
this.divName = "pwd_div_"+Math.ceil(Math.random()*100000);
this.minLen = 1;//
this.width = "200px";
this.height = "16px";
this.content = "";
this.selectedIndex = 0;
this.init();
}
PasswordStrength.prototype.init = function()
{
var s = '<table cellpadding="0" id="'+this.divName+'_table" cellspacing="0" style="width:'+this.width+';height:'+this.height+';">';
s += '<tr>';
for(var i=0;i<3;i++){
s += '<td id="'+this.divName+'_td_'+i+'" width="33%" align="center"><span style="font-size:1px"> </span><span id="'+this.divName+'_label_'+i+'" style="display:none;font-family: Courier New, Courier, mono;font-size: 12px;color: #000000;">'+this.labels[i]+'</span></td>';
}
s += '</tr>';
s += '</table>';
this.content = s;
if(this.showed)
{
document.write(s);
this.copyToStyle(this.selectedIndex);
}
}
PasswordStrength.prototype.copyToObject = function(o1,o2)
{
for(var i in o1)
{
o2[i] = o1[i];
}
}
PasswordStrength.prototype.copyToStyle = function(id)
{
this.selectedIndex = id;
for(var i=0;i<3;i++)
{
if(i == id-1)
{
this.$(this.divName+"_label_"+i).style.display = "inline";
}
else
{
this.$(this.divName+"_label_"+i).style.display = "none";
}
}
for(var i=0;i<id;i++)
{
this.copyToObject(this.styles[id],this.$(this.divName+"_td_"+i).style);
}
for(;i<3;i++)
{
this.copyToObject(this.styles[0],this.$(this.divName+"_td_"+i).style);
}
}
PasswordStrength.prototype.$ = function(s)
{
return document.getElementById(s);
}
PasswordStrength.prototype.setSize = function(w,h)
{
this.width = w;
this.height = h;
}
PasswordStrength.prototype.setMinLength = function(n)
{
if(isNaN(n))
{
return ;
}
n = Number(n);
if(n>1){
this.minLength = n;
}
}
PasswordStrength.prototype.setStyles = function()
{
if(arguments.length == 0)
{
return ;
}
for(var i=0;i<arguments.length && i < 4;i++)
{
this.styles[i] = arguments[i];
}
this.copyToStyle(this.selectedIndex);
}
PasswordStrength.prototype.write = function(s)
{
if(this.showed)
{
return ;
}
var n = (s == 'string') ? this.$(s) : s;
if(typeof(n) != "object")
{
return ;
}
n.innerHTML = this.content;
this.copyToStyle(this.selectedIndex);
}
PasswordStrength.prototype.update = function(s)
{
if(s.length < this.minLen)
{
this.copyToStyle(0);
return;
}
var ls = -1;
if (s.match(/[a-z]/ig))
{
ls++;
}
if (s.match(/[0-9]/ig))
{
ls++;
}
if (s.match(/(.[^a-z0-9])/ig))
{
ls++;
}
if (s.length < 6 && ls > 0)
{
ls--;
}
switch(ls)
{
case 0:
this.copyToStyle(1);
break;
case 1:
this.copyToStyle(2);
break;
case 2:
this.copyToStyle(3);
break;
default:
this.copyToStyle(0);
}
}
调用
<html>
<head>
<title>PasswordStrength</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" src="js/passwordstrength.js"></script>
</head>
<body>
<h4>密码强度检测</h4>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td width="100" align="right">强度显示:</td>
<td>
<script language="javascript">var ps=new PasswordStrength();</script>
</td>
</tr>
<tr>
<td align="right">密码检测:</td>
<td><input name="pwd" type="password" id="pwd" style="width:200px" onKeyUp="ps.update(this.value);"></td>
</tr>
</table>
</body>
</html>
<head>
<title>PasswordStrength</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" src="js/passwordstrength.js"></script>
</head>
<body>
<h4>密码强度检测</h4>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td width="100" align="right">强度显示:</td>
<td>
<script language="javascript">var ps=new PasswordStrength();</script>
</td>
</tr>
<tr>
<td align="right">密码检测:</td>
<td><input name="pwd" type="password" id="pwd" style="width:200px" onKeyUp="ps.update(this.value);"></td>
</tr>
</table>
</body>
</html>
代码示例下载:http://www.cnblogs.com/Files/yangcai/passwordstrength.rar
- 密码检测密码强度
- 密码强度检测
- 密码强度检测函数
- 密码强度检测
- 检测密码强度
- JavaScript密码强度检测
- 密码强度检测
- 密码强度检测
- 密码强度检测
- jquery 密码强度检测
- 检测密码强度
- 密码强度检测
- 密码强度检测
- php检测密码强度
- 检测密码强度
- js 密码强度检测
- 检测密码强度
- 密码安全强度检测
- USB DEVIEC MASS STORAGE:(linux2.6.16mxc)
- C 编译器优化(1)
- ACCESS 转换成MySQL数库
- C#基础学习simple
- Lesson one hundred thirty seven A pleasant dream.
- 密码强度检测
- NETEAVER INSTALLATION MOS-01220
- hibernate+mysql图片读取
- 最近浮躁的生活 !>_<!
- History of Computer 计算机发展史2
- 喜欢与爱(转)
- ubuntu7.10 安装中文输入法
- ubuntu Hardy(8.04)源列表大全不断更新中)
- History of Computer 计算机发展史3