Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MiguelSanchez1703 en 23 Diciembre 2016, 20:08 pm



Título: Crear contraseña aleatoria
Publicado por: MiguelSanchez1703 en 23 Diciembre 2016, 20:08 pm
Hola, me gustaría crear un programa que generara contraseñas aleatorias de la longitud seleccionada (entre los caracteres 33 y 125 de la tabla ASCII), el código es el siguiente, pero cuando lo ejecuto, me imprime otros caracteres que no están entre los dos dichos anteriormente, grácias

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. int main () {
  7. int cantidad;
  8. char contrasenya;
  9. cout << "Longitud de la contrasenya: ";
  10. cin >> cantidad;
  11. for (int contador =1 ; contador <= cantidad ; contador++) {
  12. contrasenya = (33+rand() % 125);
  13. cout << contrasenya;
  14.    }
  15. return 0 ;
  16. }


Título: Re: Crear contraseña aleatoria
Publicado por: engel lex en 23 Diciembre 2016, 20:41 pm
Código:
(33+rand() % 125);

rand()%125 generará numeros entre 0 y 124... a eso luego le sumas 33... es decir genera numeros entre 33 y 157


Título: Re: Crear contraseña aleatoria
Publicado por: Borito30 en 27 Diciembre 2016, 01:39 am
Código:
(33+rand() % 125);

rand()%125 generará numeros entre 0 y 124... a eso luego le sumas 33... es decir genera numeros entre 33 y 157
Entonces 33 sería la posición y se le sumaría 124 lo que da 157?


Título: Re: Crear contraseña aleatoria
Publicado por: MAFUS en 28 Diciembre 2016, 00:56 am
Para que lo veas bien:
Cambiamos rand()%125 por X, donde X puede tener un valor entre 0 y 124.

Si haces X + 33 cualquier valor que tenga X se le suman 33 unidades. Por tanto su rango estará en 0 + 33 y 124 + 33, es decir, entre 33 y 157.


Título: Re: Crear contraseña aleatoria
Publicado por: MiguelSanchez1703 en 28 Diciembre 2016, 12:36 pm
Y como podría hacer para limitar el inicio de la contraseña, ¿hay alguna manera?
Gracias.

Ya lo he solucionado, de una manera muy simple, solamente he disminuido el segundo valor (125) en 33 unidades (92) de manera que cuando suma los 33 me da el resultado deseado.