elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:25  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Generador de contraseñas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Generador de contraseñas  (Leído 963 veces)
..:ALT3RD:..

Desconectado Desconectado

Mensajes: 198


C++ Programmer


Ver Perfil
Generador de contraseñas
« en: 12 Noviembre 2011, 14:34 »

Buenas  :D

quiero hacer un generador de contraseñas y esto es lo que llevo (las letras no estan todas, cuando terminé el programa pongo las demas)

Código:
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{

    int contador=0;
    int cifras;
    char letras[10] ={'a','b','c','d','e','f','g','h','i','\0'};
    cout << "____Generador____" << endl;
    cout << "" << endl;
    cout << "Cuantas cifras:";
    cin  >> cifras;
    do   {


        contador++;
       


    }while (cifras >= contador);

    return 0;
}

Dentro de la sentecia do while , me gustaría saber como hacer azar con caracteres, se hacerlo con numeros pero no encuentro forma de hacerlo con los caracteres del array letras.

Un salu2!


En línea

"Mañana sabrás que hoy no sabes nada"
Queta

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Generador de contraseñas
« Respuesta #1 en: 12 Noviembre 2011, 15:19 »

Un método sencillo y rápido sería calcular el módulo de 26, cuyo resultado sería un entero entre 0 y 25, y luego sumarlo por el carácter 'a':

Código
char mi_letra = (char)(rand() % 26 + 'a');

La explicación es sencilla: 'a' equivale a 97, en el código ASCII, y en total hay 26 letras minúsculas. Si el resultado del módulo fuese  0, la suma sería 97 + 0, o sea, la letra 'a'; si fuese 1 sería 97 + 1 que equivaldría a la letra 'b' y así sucesivamente hasta llegar a 97 + 25 que su resultado sería la 'z'.

En base a esta lógica, puedes aplicarlo para letras mayúsculas y cualquier otro signo.


En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
..:ALT3RD:..

Desconectado Desconectado

Mensajes: 198


C++ Programmer


Ver Perfil
Re: Generador de contraseñas
« Respuesta #2 en: 12 Noviembre 2011, 15:22 »

Me parece una forma interesante de hacerlo, gracias ya lo comprendi :)
En línea

"Mañana sabrás que hoy no sabes nada"
Queta

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Generador de contraseñas
« Respuesta #3 en: 12 Noviembre 2011, 15:31 »

De nada ::).
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
..:ALT3RD:..

Desconectado Desconectado

Mensajes: 198


C++ Programmer


Ver Perfil
Re: Generador de contraseñas
« Respuesta #4 en: 13 Noviembre 2011, 15:52 »

Aqui esta el codigo completo por si a alguien le interesa:

Código:
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{

    int contador=0;
    int cifras;
    int opcion;
    cout << "____Generador____" << endl;
    cout << "" << endl;
    cout << "1-Minusculas" << endl;
    cout << "2-Minusculas y Mayusculas" << endl;
    cout << "3-Minusculas y Numeros" << endl;
    cout << "Numero de Cifras:" << endl;
    cin >> cifras;
    cout << "Elige una opcion:" << endl;
    cin  >> opcion;
    switch (opcion) {

    case 1:
    do   {
        contador++;
        char mi_letra = (char)(rand() % 26 + 'a');
        cout <<mi_letra;
        }while (cifras>= contador);
        break;


    case 2:
       do   {
        contador++;
        char mi_letra2 = (char)(rand() % 26 + 'a');
        char mi_letra3 = (char)(rand() % 26 + 'A');
        cout << mi_letra2 << mi_letra3;
        }while (cifras >= contador);
        break;

    case 3:
       do   {
        contador++;
        char mi_letra4 = (char)(rand() % 26 + 'a');
        char mi_letra5 = (char)(rand() % 9 + '0');
        cout << mi_letra4 << mi_letra5;
        }while (cifras >= contador);
        break;


    }

    return 0;
}
En línea

"Mañana sabrás que hoy no sabes nada"
do-while


Desconectado Desconectado

Mensajes: 604


Cuando me afeito, recuerdo porque me dejo barba.


Ver Perfil
Re: Generador de contraseñas
« Respuesta #5 en: 13 Noviembre 2011, 16:42 »

¡Buenas!

No es que tu codigo este mal, pero hay una forma de generar un solo caracter por iteracion para el segundo y tercer caso:

Mayusculas y minusculas
Código
char mi_letra = (char)((rand() % 26 + 'a') + (rand() % 2) * ('A' - 'a'));
 
Asi si rand() % 2 == 1, generara una mayuscula y si rand() % 2 == 0 sera una letra minuscula.

Minusculas y numeros:
Código
int numero = rand() % 2;
char mi_letra = (char)(rand() % (26 - 16 * numero) + 'a' + numero * ('0' - 'a'));
 
Si numero == 1, generaras primero un numero aleatorio ente 0 y 9, al que le sumaras 'a' y '0' - 'a', por lo que te generara un digito entre 0 y 9.

Si numero == 0, generaras un numero entre 0 y 25 al que le sumaras 'a' y 0 * ('0' - 'a'), es decir, tendras un caracter entre 'a' y  'a' + 25.

¡Saludos!
En línea

¡¡¡Feliz año nuevo!!!
..:ALT3RD:..

Desconectado Desconectado

Mensajes: 198


C++ Programmer


Ver Perfil
Re: Generador de contraseñas
« Respuesta #6 en: 13 Noviembre 2011, 16:44 »

Gracias por el detalle  ;D
En línea

"Mañana sabrás que hoy no sabes nada"
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Generador de Exe's en VB
Programación General
El Viejo del Baston 10 972 Último mensaje 6 Abril 2004, 21:06
por El Viejo del Baston
generador de ips
Redes
GliXeN 3 631 Último mensaje 11 Enero 2005, 06:58
por katrox32
Un bug en el gestor de contraseñas de Firefox 2 puede revelar tus contraseñas
Bugs y Exploits
el-brujo 8 2,968 Último mensaje 11 Diciembre 2006, 22:56
por dimitrix
Generador de contraseñas
Dudas Generales
Fumeta 4 637 Último mensaje 2 Agosto 2007, 14:34
por Aberroncho
[Batch] Generador de contraseñas seguras
Scripting
_m 3 1,238 Último mensaje 27 Enero 2009, 17:11
por _m
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines