Olá pessoal estou tentando fazer um programa que testa a força da senha, e ele precisa mostrar se a senha é fraca, media ou forte, com desenhos
Desenhei uma label que mostra vermelho se é fraca, amarela media, e verde fraca, ela está com alguns erros, mas não é esse o caso, isso eu cuido dpois.
Quando ele digitar senhas que possuiem simbolos ele ganha mais pontuação, e assim por diante.
O problema é que não sei como faz por exemplo se ele digitar varias vezes o numero 1 como que eu faço para comparar digito por digito se são iguais, pois daí a senha seria fraca, eu tentei assim.
for (int i=0;i<password.length();i++){
if (Pattern.matches("[0-9]", password)){
count++;
}
}
eu fiz que o password fosse uma string, esse for está errado pois se eu digitar 1451 ele faz 4vezes uma comparação se contem numeros entre 0-9?
ele tinha que fazer apenas uma vez, certo?pq ele já percorre toda a string em uma só vez…
como eu faria para uma variavel receber a quantidade de numeros repetidos que tem a senha???
Nao sei se é isso que vc quer… mas pelo que eu entendi seu problema é nao conseguir pegar caracter por caracter de uma string…
Aproveitando seu codigo…
for (int i=0;i<password.length();i++){
//password.charAt(i) retorna um char que vc pode usar pra comparacao...
if (Pattern.matches("[0-9]", password.charAt(i))){
//faz o que deve ser feito
}
}
A parte de verificar se a senha é segura é pura logica…
Eu faria um vetor de 10 posições, cujo índice é o próprio dígito a ser testado. Algo assim:
int [] frequencia = new int[10];
for (int i=0;i<password.length();i++){
try{
int digito = Integer.parseInt(password.charAt(i,10));
frequencia[digito]++;
}catch(NumberFormatException nfe{
//ignora, nao eh numero
}
}
Depois, é só ver o valor no vetor para cada um dos dígitos.>
Existem muitas formas de verificar força de senhas, algumas já citadas acima.
Por exemplo, se você tiver uma infra-estruta maior pode verificar se a palavra existe em algum dicionário. Ou mesmo verificações simples como presença caracteres sequenciais (pelo código ASCII), semelhanca entre outros dados do usuário e a senha (se não é o prórprio login, data de aniversário, etc).
Enfim, a qualidade será algo mais incremental mesmo. Acho que não tem nehuma fórmula mágica.