Gerador de Senha
Publicado por Caio Marcus de Souza Dutra (última atualização em 13/05/2021)
[ Hits: 2.231 ]
Algoritmo simples que gera uma senha a partir de números, letras e símbolos aleatórios.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> char key_range[77] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', '_', '.', '-', '$', '%', '/', '&', '(', ')', '[', ']', '?', '!', '@', '=', '+', '*' }; char * key_generate (int type, int qtd) { char * pass_generated; int x1 = 0, x2 = 0; pass_generated = (char *) malloc (qtd * sizeof (char)); if (pass_generated == NULL) return (NULL); srand(time(NULL)); /* Types: 1 - Numbers only 2 - Letters only 3 - Numbers and Letters 4 - Hard pass. */ switch (type) { case 1: x1 = 0; x2 = 9; break; case 2: x1 = 10; x2 = 49; break; case 3: x1 = 0; x2 = 49; break; case 4: x1 = 0; x2 = 76; break; default: return (NULL); } for (int n = 0; n < qtd; n++) pass_generated[n] = key_range[x1 + rand () % x2]; return (pass_generated); } void clean_screen () { system("clear"); printf ("**************************************************\n"); printf ("** GENERATES A RANDOMIC KEY ** STRONG PASSWORD **\n"); printf ("** **\n"); printf ("**************************************************\n"); printf ("\n"); } int main ( ) { int t, q; char * pass = NULL; while (1) { clean_screen(); printf ("Choose your password type: \n"); printf (" 1 - Numbers only;\n"); printf (" 2 - Letters only;\n"); printf (" 3 - Numbers and Letters;\n"); printf (" 4 - Hard pass;\n"); printf (" 0 - Let me out.\n"); printf ("\n: "); scanf ("%d", &t); if (t == 0) return (0); printf ("Ok.. and how many characters? "); scanf ("%d", &q); if (q == 0) { printf ("I'm sorry! You can't generate a password with no characters...\n"); printf ("Please, tell me again how many characters do you want for your password: "); scanf ("%d",&q); if (q == 0) { printf ("\nOk. We can't go on this way. I'm going to mom's and taking Jack with me. See you in hell..\n"); getch(); return (0); } } printf ("Ok... wait a minute while we generate your password... Here we go:\n"); pass = key_generate (t, q); if (pass == NULL) printf ("Oh, no! Something went wrong! I'm sorry, try again.\n"); else for (int i = 0; i < q; i++) printf ("%c", pass[i]); free (pass); getch(); } return (0); }
função de remoção em uma Arvore
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Novidades Linux: Kernel 6.17, distros em ebulição e segurança em foco
Kernel ganha novos linters Rust e distros avançam com recursos de IA
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
Orientação para instalar o Warsaw - módulo de proteção do Banco do Bra... (2)
systemd-resol... precisa ser reiniciado periodicamente (5)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 [RESOLVIDO] (6)
Fedora não reconhece James Donkey 102 Wireless Gaming Mouse (2)