Validando se uma senha é segura, utilizando o Arduino.
A ideia é simples: o usuário digita uma senha pelo Monitor Serial e o Arduino analisa com base em algumas regras, como tamanho mínimo, presença de números, letras maiúsculas e caracteres especiais.
O objetivo principal é trabalhar conceitos básicos de programação, como:
- Uso do tipo char, analisando a senha caractere por caractere
- Comparações lógicas para identificar letras, números e outros caracteres
- Uso de variáveis booleanas como flags, marcando se determinada regra já foi atendida ou não
Simples, sem sensores e outros componentes, é para quem está começando e quer entender como o computador lê e interpreta textos, aplicando regras simples para resolver um problema real.
👉Compile esse fonte no Arduino, abra o Monitor Serial e digite as senhas para a lógica verificar se é uma senha válida ou não.
A sugestão é mexer no código. Mude o tamanho mínimo da senha, tente exigir mais de um número e mais de uma letra maiúscula. Crie novas validações.
A ideia é usar o Arduino para pensar como programador, da mesma forma que fizemos em outros projetos, como a Calculadora de Cores de Resistores e o projeto Loterias.
Segue o código fonte com comentários para entendimento.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | /*--------------------------------------------------------- Programa : VALIDADOR DE SENHA Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 20/12/2025 ---------------------------------------------------------*/ void setup() { //Inicia a comunicação serial Serial.begin(115200); //Delay para garantir que o Monitor Serial conecte delay(1000); //Mensagens iniciais Serial.println("VALIDADOR DE SENHA"); Serial.println("www.efeitonerd.com.br"); Serial.println("Regras da senha:"); Serial.println("- Minimo 6 caracteres"); Serial.println("- Pelo menos 1 numero"); Serial.println("- Pelo menos 1 letra"); Serial.println("- Pelo menos 1 letra MAIUSCULA"); Serial.println("- Pelo menos 1 caractere especial"); Serial.println("\nDigite uma senha:"); } void loop() { //Verifica se existe algum dado vindo pela Serial if (Serial.available() > 0) { //Lê a linha digitada até o ENTER (\n) e retorna uma String inteira String senha = Serial.readStringUntil('\n'); //Remove espaços do início e fim senha.trim(); //Se o usuário só apertar ENTER, ignora if (senha.length() == 0) { Serial.println("Nada foi digitado."); return; } //Variáveis booleanas iniciadas como false e serão ativadas conforme a análise da senha bool temLetra = false; bool temNumero = false; bool temMaiuscula = false; bool temEspecial = false; //Valida o tamanho mínimo da senha if (senha.length() < 6) { Serial.println("Senha invalida: menos de 6 caracteres"); Serial.println("\nDigite outra senha:"); return; } //Loop para analisar a senha caractere por caractere for (int i = 0; i < senha.length(); i++) { //char é um tipo que representa um caractere. Aqui pegamos um único caractere da String char c = senha.charAt(i); //Verifica se o caractere é um número. '0' até '9' são códigos ASCII consecutivos bool isNumero = (c >= '0' && c <= '9'); //Verifica se é letra minúscula. 'a' até 'z' são valores consecutivos na tabela ASCII bool isLetraMinuscula = (c >= 'a' && c <= 'z'); //Verifica se é letra maiúscula. 'A' até 'Z' são valores consecutivos na tabela ASCII bool isLetraMaiuscula = (c >= 'A' && c <= 'Z'); //Se for letra minúscula ou maiúscula, então é letra bool isLetra = isLetraMinuscula || isLetraMaiuscula; //Atualiza as variáveis conforme o tipo do caractere if (isNumero) temNumero = true; if (isLetra) temLetra = true; if (isLetraMaiuscula) temMaiuscula = true; //Caractere especial: se não é letra e não é número, então é especial if (!isLetra && !isNumero) temEspecial = true; } // Validação final da senha if (temLetra && temNumero && temMaiuscula && temEspecial) { Serial.println("Senha valida!"); delay(1000); } else { Serial.println("Senha invalida:"); if (!temLetra) { Serial.println("- Falta letra"); } if (!temNumero) { Serial.println("- Falta numero"); } if (!temMaiuscula) { Serial.println("- Falta letra MAIUSCULA"); } if (!temEspecial) { Serial.println("- Falta caractere especial"); } } Serial.println("\nDigite outra senha:"); } } |

Nenhum comentário:
Postar um comentário