Password Strength Meter (CSS/Javascript/jQuery)
By | Wednesday, January 11, 2012


Hide Comments







Code:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function password_strength(password, strlen){
//SEARCHES FOR EACH OF THESE PATTERNS FOR VARIETY
var lo = /[a-z]+/g;
var up = /[A-Z]+/g;
var num = /[0-9]+/g;
var sym = /[^A-Za-z0-9]+/g;
//BLANK UNTIL COUNTS VARIETY AND SYMBOLS (DO NOT REMOVE)
var variety = 0;
var symbols = 0;

if(strlen>=6&&strlen<=25){
if(password.match(lo)){
variety++;
}
if(password.match(up)){
variety++;
}
if(password.match(num)){
variety++;
}
if(password.match(sym)){
variety++;
}
//COUNTS SYMBOLS, USED FOR EXTRA POINTS
for(i=0; i<strlen; i++){
if(password.substr(i, 1).match(sym)){
symbols++;
}
}

var score = strlen; //POINT GIVEN FOR EVERY CHARACTER
//IF THERE ARE 3 VARIETIES, 1.5 FOR EACH & 2 FOR EACH SYMBOL
if(variety==2){
score += (variety * 1.5)+(symbols*2);
}
//IF THERE ARE >=3 VARIETIES, 1.5 FOR EACH & 3 FOR EACH SYMBOL
//BUT, IF <= 8 CHARS, ONLY 2 GIVEN FOR EACH SYMBOL
if(variety>=3){
if(strlen>=8){
score += (variety * 1.5)+(symbols*3);
} else {
score += (variety * 1.5)+(symbols*2);
}
}

var scale = 25; //MEASURES OUT OF 25 PTS, MAY BE MORE FOR SUPERSTRONG PASSWORDS
var percent = (score / scale) * 100; //GETS PERCENT OF THE SCALE
//MAY BE > 100%, THEREFORE SCALES BACK TO 100 FOR CSS PURPOSES
if(percent>100){
percent = 100;
}
//WIDTH OF THE BAR
var bar =$("#bar").width();
//WIDTH OF SHADED AREA
var shade = (percent * bar) / 100;

//GRADING JUDGMENTS & SHADE BG COLOR
if(percent<50){
var grade = "Weak";
var bg = "#e8f9ff";
}
if(percent>=50&&percent<70){
var grade = "Fair";
varbg = "#e8f9ff";
}
if(percent>=70&&percent<85){
var grade = "Good";
var bg = "#32baed";
}
if(percent>=85){
var grade = "Strong";
var bg = "#12495d";
}
//CHANGES COLOR & WIDTH OF SHADED AREA
$("#score").css({"background":bg, "width":shade+"px"});
} {
$("#score").css({"background":"#ffffff", "width":"0px"});
var grade = "Password must be from 6 to 25 characters";
}
$("#grade").html(grade); //DISPLAY JUDGMENT IN HTML
}
</script>
<style>
#bar {
background: #ffffff;
border: 1px #000000 solid;
height: 10px;
width: 150px;
}
#score {
height: 10px;
width: 0;
}
</style>
</head>
<body>
<input onKeyUp="password_strength(this.value, this.value.length)"><br><br>
<div id="bar"><div id="score"></div></div>
<span id="grade"></span>
</body>
</html>