Показать сообщение отдельно
  #1 (permalink)  
Старый 18.11.2013, 03:39
Новичок на форуме
Отправить личное сообщение для dane Посмотреть профиль Найти все сообщения от dane
 
Регистрация: 18.11.2013
Сообщений: 1

Проверка надёжности пароля
Собственно изобретаю велосипед, вроде бы всё в порядке, но что-то идёт не так, вот не могу разобраться, что именно:
function CheckPass(item) {
	var pass = document.getElementById(item).value;
	var pass_length = document.getElementById(item).value.length;
	var item_view = 'pswdcheck';
	var count=0;
	var reg = "\!\"\:\?\\\%\?\;\|\/\=\-\+\_\(\)\*\#\@\$\^\&\.\,\[\]\{\}\'\`\~№";
	if (pass_length > 0 && pass_length <= 5) {
		count += 3;
		count *= 1;
	} else if (pass_length > 5 && pass_length <= 8) {
		count += 5;
		count += countsimbols(pass,pass_length);
		count *= 1.5;
	} else if (pass_length > 8 && pass_length <= 12) {
		count += 10;
		count += countsimbols(pass,pass_length);
		count *= 2;
	} else if (pass_length > 12 && pass_length <= 17) {
		count += 15;
		count += countsimbols(pass,pass_length);
		count *= 2.5;
	} else if (pass_length > 17 && pass_length <= 20) {
		count += 20;	
		count += countsimbols(pass,pass_length);
		count *= 3;
	} else if (pass_length > 21) {
		count += 25;
		count += countsimbols(pass,pass_length);
		count *= 4;
	}	
	if (count == 0) {
		document.getElementById(item_view).innerHTML = 'Пожалуйста введите пароль ' + count;
		document.getElementById(item_view).className = 'pswdno';
	} else if (count > 0 && count <= 40) {
		document.getElementById(item_view).innerHTML = 'Наихудший пароль ' + count;
		document.getElementById(item_view).className = 'pswdweeker';	
	} else if (count > 40 && count <= 80) {
		document.getElementById(item_view).innerHTML = 'Плохой пароль ' + count;
		document.getElementById(item_view).className = 'pswdweek';	
	} else if (count > 80 && count <= 169) {
		document.getElementById(item_view).innerHTML = 'Умереный  пароль ' + count;
		document.getElementById(item_view).className = 'pswdmedium';	
	} else if (count > 169 && count <= 300) {
		document.getElementById(item_view).innerHTML = 'Хороший  пароль ' + count;
		document.getElementById(item_view).className = 'pswdgood';	
	} else if (count > 300 && count <= 500) {
		document.getElementById(item_view).innerHTML = 'Сильный пароль ' + count;
		document.getElementById(item_view).className = 'pswdstrong';	
	} else if (count > 500 && count <=900) {
		document.getElementById(item_view).innerHTML = 'Науилучший пароль ' + count;
		document.getElementById(item_view).className = 'pswdstronger';	
	}	
}
function countsimbols(pass,pass_length) {
	var count = 0;
	//цифры
	if (pass.match( /\d/ )){
		var i = pass_length - pass.replace(/\d/gm,'').length;
		count += 5;
		if (i >= 6) 
			count += 10;
	}	
	//символы
	if (pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) {
		count += 8;	
		var i = pass_length - pass.replace(/.[!,@,#,$,%,^,&,*,?,_,~]/gm,'').length;
			if (i >= 3)
			count += 20;
	}
	//маленькие буквы
	if (pass.match(/[a-zа-я]/)) {
		count+=5;
		var i = pass_length - pass.replace(/[a-zа-я]/gm,'').length;
		if (i >= 6) 
			count += 10;
	}	
	//большие буквы
	if (pass.match(/[A-ZА-Я]/)) {
		count += 5;
		var i = pass_length - pass.replace(/[A-ZА-Я]/gm,'').length;
		if (i >= 6) 
			count += 10;
	}	
	//цифры + сим156волы || символы + цифры
	if (pass.match(/\d/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) {
		count += 10;	
	}
	//цифры + маленькие буквы || маленькие буквы + цифры
	if (pass.match(/\d/) && pass.match(/[a-zа-я]/) {
		count += 8;
	}
	//цифры + большие буквы || большие буквы + цифры
	if (pass.match(/\d/) && pass.match(/[A-ZА-Я]/)) {
		count += 8;
	}
	//маленькие буквы + большие буквы || большие буквы + маленькие буквы
	if (pass.match(/[a-zа-я]/) && pass.match(/[A-ZА-Я]/)) {
		count += 6;	
	}
	//маленькие буквы + символы || символы +  маленькие буквы
	if (pass.match(/[a-zа-я]/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) {
		count += 10;
	}
	//большие буквы + символы || символы + маленькие буквы
	if (pass.match(/[A-ZА-Я]/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) {
		count += 10;
	}
	//цифры + большие буквы + маленькие буквы
	if (pass.match(/\d/) && pass.match(/[A-Za-zА-Яа-я]/)) {
		count += 10;	
	}
	//цифры + маленькие буквы + символы 
	if (pass.match(/\d/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/) && pass.match(/[a-zа-я]/))  {
		count += 15;
	}
	//цифры + большие буквы + символы
	if (pass.match(/\d/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/) && pass.match(/[A-ZА-Я]/)) {
		count += 15;
	}
	//большие буквы + маленькие буквы + символы
	if (pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)  && pass.match(/[A-Za-zА-Яа-я]/)) {
		count += 15;
	}
	//все
	if (pass.match(/\d/) && pass.match(/[A-Za-zА-Яа-я]/) && pass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) {
		count += 20;
	}
	return count;
}


<form>
	<input type='password' id='pass_id' name='pass' onkeypress="CheckPass('pass_id')" onfocus="CheckPass('pass_id')" onkeyup="CheckPass('pass_id')" value="" placeholder="Password" required/>
	<div id='pswdcheck'></div>
</form>

единственные предположения что где-то скобочку упустил, либо в функцию не правильно передаю значения, с js столкнулся пятый раз, так что возможно что ошибки самые новичковские.

Конечно свой велосипед хорошо, но я всё таки поискал кое-что и нашёл такую проверку https://github.com/lowe/zxcvbn
Только вот вопрос как её поставить, не разберусь никак, с гитхабом впервые начал мудрить.
Ответить с цитированием