PDA

Ver la Versión Completa : Calidad Contraseña


tertuliano
21-09-2006, 21:40:51
Hola, saben de algun algoritmo que valide la calidad de un pasword elejido. Por ej que no haya repeticiones de caracteres, secuancias faciles de encontrar, etc.

Saludos

Caral
21-09-2006, 22:25:40
Hola
La realidad es que no entiendo bien la pregunta:
Pero se me ocurre que por medio de una matriz se podrian especificar ciertas condiciones que se tendrian que cumplir para que el password fuera el correcto, no se, se me ocurre.
Saludos

maeyanes
21-09-2006, 22:43:54
Tengo una función en JavaScript que hace algo como lo que quieres, ya sería que la traduzcas a Delphi:


function check_pw(pw_to_check)
{
var counter_to_check = 0;
var minlength_to_check = 6;

if (pw_to_check.length >= minlength_to_check)
{
counter_to_check = counter_to_check + 1;
}
if (pw_to_check.match(/[A-Z\Ä\Ö\Ü]/))
{
counter_to_check = counter_to_check + 2;
}
if (pw_to_check.match(/[a-z\ä\ö\ü\ß]/))
{
counter_to_check = counter_to_check + 1;
}
if (pw_to_check.match(/[0-9]/))
{
counter_to_check = counter_to_check + 2;
}
if (pw_to_check.match(/[\.\,\?\!\%\*\_\#\:\;\~\\&\$\§\€\@\/\=\+\-\(\)\[\]\|\<\>]/))
{
counter_to_check = counter_to_check + 2;
}
if (pw_to_check == document.getElementsByName('username').username.value)
{
counter_to_check = 0;
}
if (pw_to_check == document.getElementsByName('email').email.value)
{
counter_to_check = 0;
}

if (counter_to_check <= 2)
{
document.getElementsByName('holder_pw')[0].style.backgroundColor = 'red';
document.getElementsByName('holder_pw')[0].style.color = 'black';
document.getElementsByName('holder_pw')[0].style.border = '1px solid black';
document.getElementsByName('holder_pw')[0].value = 'Insegura';
}
else if (counter_to_check <= 4)
{
document.getElementsByName('holder_pw')[0].style.backgroundColor = 'yellow';
document.getElementsByName('holder_pw')[0].style.color = 'black';
document.getElementsByName('holder_pw')[0].style.border = '1px solid black';
document.getElementsByName('holder_pw')[0].value = 'No recomendable';
}
else if (counter_to_check <= 5)
{
document.getElementsByName('holder_pw')[0].style.backgroundColor = 'green';
document.getElementsByName('holder_pw')[0].style.color = 'white';
document.getElementsByName('holder_pw')[0].style.border = '1px solid black';
document.getElementsByName('holder_pw')[0].value = 'Relativamente segura';
}
else if (counter_to_check <= 7)
{
document.getElementsByName('holder_pw')[0].style.backgroundColor = 'green';
document.getElementsByName('holder_pw')[0].style.color = 'white';
document.getElementsByName('holder_pw')[0].style.border = '1px solid black';
document.getElementsByName('holder_pw')[0].value = 'Segura';
}
else if (counter_to_check == 8)
{
document.getElementsByName('holder_pw')[0].style.backgroundColor = 'green';
document.getElementsByName('holder_pw')[0].style.color = 'white';
document.getElementsByName('holder_pw')[0].style.border = '1px solid black';
document.getElementsByName('holder_pw')[0].value = 'Muy segura';
}
}


Si te fijas, usan mucho las expresiones regulares. Existe para Delphi alguna biblioteca para manejo de expresiones regulares, solo es cosa que hagas una búsqueda...


Saludos...