symdesign
3/6/2015 - 9:16 AM

Password Security Check

<input type="password" id="password" />
<span id="security" class="default">&nbsp;</span>
$(document).ready(function() {
	var strPassword;
	var charPassword;
	var security = $("#security");
	var minLength = 7;
	var baseScore = 0, score = 0;

	var num = {};
	num.Overflow = 0;
	num.Upper = 0;
	num.Numbers = 0;
	num.Symbols = 0;

	var bonus = {};
	bonus.Overflow = 3;
	bonus.Upper = 4;
	bonus.Numbers = 5;
	bonus.Symbols = 5;
	bonus.Combo = 0; 
	bonus.FlatLower = 0;
	bonus.FlatNumber = 0;

	outputResult();
	$("#password").bind("keyup", checkVal);

	function checkVal() {
		init();
		if (charPassword.length >= minLength) {
			baseScore = 50;
			analyzeString();
			calcSecurity();
		} else {
			baseScore = 0;
		}
		outputResult();
	}
	function init() {
		strPassword= $("#password").val();
		charPassword = strPassword.split("");

		num.Overflow = 0;
		num.Upper = 0;
		num.Numbers = 0;
		num.Symbols = 0;
		bonus.Combo = 0;
		bonus.FlatLower = 0;
		bonus.FlatNumber = 0;
		baseScore = 0;
		score = 0;
	}
	function analyzeString () {   
		for (i=0; i<charPassword.length;i++) {
			if (charPassword[i].match(/[A-Z]/g)) {num.Upper++;}
			if (charPassword[i].match(/[0-9]/g)) {num.Numbers++;}
			if (charPassword[i].match(/(.*[!,@,#,$,%,^,&,*,?,_,~])/)) {num.Symbols++;} 
		}

		num.Overflow = charPassword.length - minLength;
	
		if (num.Upper && num.Numbers && num.Symbols) {
			bonus.Combo = 25; 
		} else if ((num.Upper && num.Numbers) || (num.Upper && num.Symbols) || (num.Numbers && num.Symbols)) {
			bonus.Combo = 15; 
		}
		if (strPassword.match(/^[\sa-z]+$/)) { 
			bonus.FlatLower = -15;
		}
		if (strPassword.match(/^[\s0-9]+$/)) { 
			bonus.FlatNumber = -35;
		}
	}
	function calcSecurity() {
		score = baseScore + (num.Overflow*bonus.Overflow) + (num.Upper*bonus.Upper) + (num.Numbers*bonus.Numbers) + (num.Symbols*bonus.Symbols) + bonus.Combo + bonus.FlatLower + bonus.FlatNumber;
	}   
	function outputResult() {
		if ($("#password").val()== "") { 
			security.html("").removeClass("weak strong stronger strongest").addClass("default");
		} else if (charPassword.length < minLength) {
			security.html("Bitte geben Sie mindestens " + minLength+ " Zeichen ein!").removeClass("strong stronger strongest").addClass("weak");
		} else if (score<50) {
			security.html("Ihr Passwort ist sehr wage!").removeClass("strong stronger strongest").addClass("weak");
		} else if (score>=50 && score<75) {
			security.html("Ihr Passwort ist durchschnittlich!").removeClass("stronger strongest").addClass("strong");
		} else if (score>=75 && score<100) {
			security.html("Ihr Passwort ist stark!").removeClass("strongest").addClass("stronger");
		} else if (score>=100) {
			security.html("Ihr Passwort ist sicher!").addClass("strongest");
		}
	}
});