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 ){
va r grade
= "Weak" ;
var bg
= "#e8f9ff" ;
}
if (percent
>=50 && percent
< 70 ){
var grade
= "Fair" ;
var bg
= "#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" });
}
else
{
$(
"#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>
Views: 34 Likes: 0 Dislikes: 0