Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 8 de 16

Algoritmo de generacion de claves C++

Esta es una discusión para el tema Algoritmo de generacion de claves C++ en el foro Programación, bajo la categoría Webmasters y Programadores; Hola, resulta que tengo un programa (hecho por mi xD) y me gustaria protegerlo con un serial: me gustaria crear un serial de 25 digitos divididos en 4/6/5/6/4 algo mas ...
Página: 1


  1. #1
    Senior Member

    Fecha de ingreso
    13 jul, 06
    Ubicación
    Elche
    Mensajes
    333

    Algoritmo de generacion de claves C++

    Hola, resulta que tengo un programa (hecho por mi xD) y me gustaria protegerlo con un serial: me gustaria crear un serial de 25 digitos divididos en 4/6/5/6/4 algo mas o menos asi:
    Código:
    xxxx-xxxxxx-xxxxx-xxxxxx-xxxx
    haber si me podeis ayudar a crear un programa con un algoritmo de generacion de claves para crear mis seriales. Me hago una idea con alguntipo de array....
    Algo mas o menos asi??
    Código:
    struct nodo{ 
           int section1[4]; 
           int section2[6]; 
           int section3[5]; 
           int section4[6]; 
           int section5[4]; 
           int id=0; 
    }serial;
    o si no podria usar la funcion rand / srand o random pero no se bien como funcionan...
    al final de programa imprimirlo todo:
    Código:
    int cont=0; // declaramos el contador 
     
    while (cont!=100){ 
          cout << "\n\t " << num1 << "-" << num2 << "-" << num3 << "-" << num4 << "-" << num5 << endl; 
          cout << "\n\n\t Serial nº: " << id << endl; 
          cont++; // siguiente serial 
          }
    soy nuevo en esto aunque tengo algunos conocimientos sobre c y c++...
    cada serial creado tendra su id (el numero de serial por orden)
    si no me entendeis preguntar lo que haga falta
    gracias

    P.D.: luego pongo el codigo javascript que usaria en mi pagina para activar el serial de mi programilla ^^ (por supuesto que no lo he hecho yo, me lo ha dado un amigo que sabe jscript)

    salu2
    dew

     
     
  2. #2
    Super Moderador Avatar de rob1104

    Fecha de ingreso
    07 mar, 05
    Ubicación
    México
    Mensajes
    2,548
    Hola, es sencillo, lo ideal es crear una funcion que le pases como parametro el numero de caracteres aleatorios que quieres generar y te retorne la cadena ya generada, asi solamente las mandas imprimir.

    Te dejo esto como base, juega con ello a ver que logras sacar (esta en C):
    Código PHP:
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>

    char cadena[36]={'A','B','C','D','E','F','G','H','I','J','K','L',
                     
    'M','N','O','P','Q','R','S','T','U','V','W','X',
                     
    'Y','Z','0','1','2','3','4','5','6','7','8','9'};
            
    int main()
    {
        
    srand(time(NULL)); //Para que los numeros sean realmente aleatorios
        
    int i//contador
        
    char digito[3]; 
        
    printf("Los 4 caracteres alfanumericos generados aleatoriamente son: ");
        for(
    i=0;i<=3;i++)
        {
            
    digito[i]=cadena[rand() % 35]; //numero aleatorio entre 0 y 35
            
    printf("%c",digito[i]); 
        }
        
    printf("\n");
        
    system("pause");     
        return 
    0;

    Saludos
    Última edición por rob1104; 11/11/2009 a las 00:16

     
     
  3. #3
    Senior Member

    Fecha de ingreso
    13 jul, 06
    Ubicación
    Elche
    Mensajes
    333
    Hola, muchas gracias ya mas o menos estoy terminando el programa, por cierto solo usare numeros (digitos). Pero tengo una pequeña duda... El serial que genere el programa tiene que validarlo en mi pagina. Te paso el codigo javascript que se encargara de validar el serial:
    Código:
     <!-- 
    function inputLengthCheck(fieldNum) { 
     
     
          if( document.captureEvents ) { 
     
              if( Event.KEYUP ) { 
     
                  document.captureEvents( Event.KEYUP ); 
              } 
          } 
     
          document.onkeyup = alertkey; 
     
          function alertkey(e) { 
              if( !e ) { 
     
                  if( window.event ) { 
     
                      e = window.event; 
                  } else { 
     
                      return; 
                  } 
              } 
              if( typeof( e.which ) == 'number' ) { 
     
                  e = e.which; 
              } else if( typeof( e.keyCode ) == 'number'  ) { 
     
                  e = e.keyCode; 
              } else if( typeof( e.charCode ) == 'number'  ) { 
     
                  e = e.charCode; 
              } else { 
     
                  return; 
              } 
     
     
     
             if (fieldNum == 1) { 
     
     
     
                var boxString = document.form1.section1.value; 
     
     
                if ((e >= 65 && e <= 122) || (e >= 48 && e <= 57)) { 
     
                   if (boxString.length == 4 && fieldNum < 5) { 
                      document.form1.section2.focus(); 
                   } 
     
                } 
     
             } 
     
             if (fieldNum == 2) { 
     
     
     
                var boxString = document.form1.section2.value; 
     
     
                if ((e >= 65 && e <= 122) || (e >= 48 && e <= 57)) { 
     
                   if (boxString.length == 6 && fieldNum < 5) { 
                      document.form1.section3.focus(); 
                   } 
     
                } 
     
             } 
     
             if (fieldNum == 3) { 
     
     
     
                var boxString = document.form1.section3.value; 
     
     
                if ((e >= 65 && e <= 122) || (e >= 48 && e <= 57)) { 
     
                   if (boxString.length == 5 && fieldNum < 5) { 
                      document.form1.section4.focus(); 
                   } 
     
                } 
     
             } 
     
             if (fieldNum == 4) { 
     
     
     
                var boxString = document.form1.section4.value; 
     
     
                if ((e >= 65 && e <= 122) || (e >= 48 && e <= 57)) { 
     
                   if (boxString.length == 6 && fieldNum < 5) { 
                      document.form1.section5.focus(); 
                   } 
     
                } 
     
             } 
     
             if (fieldNum == 5) { 
     
     
     
                var boxString = document.form1.section5.value; 
     
     
     
     
             } 
     
     
          } 
     
     
       } 
    -->
    Es un simple validador en javascript que se encarga de validar el serial introducido (en diferentes campos de texto: section 1,2,3,4,5.)
    gracias! ^^

    salu2
    dew
    Última edición por gAb1; 11/11/2009 a las 23:00

     
     
  4. #4
    Senior Member

    Fecha de ingreso
    13 jul, 06
    Ubicación
    Elche
    Mensajes
    333
    Ya esta!! xD
    Código:
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    char cadena[10]={'0','1','2','3','4','5','6','7','8','9'};
     
    int main()
    {
        int cont=0;
     
        srand(time(NULL)); //Para que los numeros sean realmente aleatorios
        while (cont!=10){ // Numero de seriales que quieres
        int a,e,i,o,u; //contador
        char digito[3];
        printf("\n\n\t ");
        for(a=0;a<=3;a++)
        {
            digito[a]=cadena[rand() % 9]; //numero aleatorio entre 0 y 9
            printf("%c",digito[a]);
        }
        printf(" - ");
        for(e=0;e<=5;e++)
        {
            digito[e]=cadena[rand() % 9]; //numero aleatorio entre 0 y 9
            printf("%c",digito[e]);
        }
        printf(" - ");
        for(i=0;i<=4;i++)
        {
            digito[i]=cadena[rand() % 9]; //numero aleatorio entre 0 y 9
            printf("%c",digito[i]);
        }
        printf(" - ");
        for(o=0;o<=5;o++)
        {
            digito[o]=cadena[rand() % 9]; //numero aleatorio entre 0 y 9
            printf("%c",digito[o]);
        }
        printf(" - ");
        for(u=0;u<=3;u++)
        {
            digito[u]=cadena[rand() % 9]; //numero aleatorio entre 0 y 9
            printf("%c",digito[u]);        
        }
        cont++;
        printf("\n\n\t Serial N.: %d", cont);
    }
        printf("\n\n\n\t ");
        system("pause");     
        return 0;
    }
    pero tengo muchas preguntas... si esto lo he hecho yo, muchos si crean este programa tambien podrian validar un serial en la pagina no?? o los numeros que crea este programa no van a validarse con el codigo que te pase antes??
    Pruebalo porfii! para algo lo he puesto ^^
    gracias!

    salu2
    dew
    Última edición por gAb1; 11/11/2009 a las 23:40

     
     
  5. #5
    Super Moderador Avatar de rob1104

    Fecha de ingreso
    07 mar, 05
    Ubicación
    México
    Mensajes
    2,548
    A ver si entendi bien (no he visto el validador de javascript, lo haré hasta la noche que ahorita estoy en el trabajo), quieres que cada serial generado lo valide el javascript, pero en que reglas se va a basar para que sea valido??.

    Por cierto, te explico, en ese código hay un 0.0000000001% de probabilidades de que salga un serial repetido, ya que en esta linea:
    Código PHP:
    srand(time(NULL)); 
    Se valida la semilla respecto a los milisegundos de la hora de cada pc, mas aparte la generacion del numero aleatorio con rand(), asi que de eso no te preocupes.

    Si puedes explicarme un poco el javascript te lo agradeceria ya que como te dije no tengo tiempo de probarlo.

    Saludos

     
     
  6. #6
    Senior Member

    Fecha de ingreso
    13 jul, 06
    Ubicación
    Elche
    Mensajes
    333
    Hola ^^, bueno pues el programa ya me genera seriales con el formato que quiero de 4-6-5-6-4 (solo numeros). Pero no me los valida en la pagina, me refiero que a lo mejor abra que generar el codigo de otra forma... nose, a ver, por ejemplo aqui pone:
    Código:
    if (fieldNum == 1) {
    
     
     
     
                var boxString = document.form1.section1.value; 
     
     
                if ((e >= 65 && e <= 122) || (e >= 48 && e <= 57)) { 
     
                   if (boxString.length == 4 && fieldNum < 5) { 
                      document.form1.section2.focus(); 
                   } 
     
                } 
     
             }
    si el codigo valida la primera casilla (la de 4 digitos) pues debe ser mayor o igual a 65 y menor o igual a 122 o mayor o igual a 48 y menor o igual a 57... jeje no entiendo bien lo que valida porque eso no lo entiendo pero quien me lo hizo el codigo me dijo que validaba codigos de solo numeros del formato que dije antes...
    ayudame plss

     
     
  7. #7
    Super Moderador Avatar de rob1104

    Fecha de ingreso
    07 mar, 05
    Ubicación
    México
    Mensajes
    2,548
    Sigo sin entender a que te refieres con validar...

    Vamos con un ejemplo practico.

    Supongamos que el programa genera este serial:
    1104-231392-32678-269437-2009

    Entonces, simplemente el javascript va a recorrer las casillas y verificar que en la primera seaan 4 digitos, en la segunda 6, en la recera 5, en la cuarta 6 y en la quinta 5??.

    Eso no es suficiente, lo que hay que hacer es una condicion, tanto para el programa, como para el javascript...

    Porque en este momento el javascript, solamente solamente valida que haya letras y numeros
    Codigos ascii del 65 al 122 (Letras A-Z a-z)
    Codigos ascii del 48 al 57 (Digitos numericos 0-9)

    Lo que podrias hacer es que la suma o multiplicacion de cada digito de la casilla te de un resultado y esta tenga que ser comparado en el javascript y ya ahora si podras verificar si el serial es valido o no.

     
     
  8. #8
    Maestro de las montañas Avatar de ole1105

    Fecha de ingreso
    02 jun, 05
    Ubicación
    La Paz - Bolivia
    Mensajes
    3,012
    Lo que valida son carácteres y dígitos basados en el codigo ascii.
    65 -> A 122 -> z 48 -> 0 57 -> 9

    110512112009

     
     
Página 1 de 2 12 ÚltimoÚltimo

Temas similares

  1. Respuestas: 2
    Último mensaje: 14/10/2009, 20:05
  2. POR QUE ME DA DATOS ERRONEOS ESTE ALGORITMO
    Por joseblanco6663 en el foro Programación
    Respuestas: 3
    Último mensaje: 09/04/2009, 06:10
  3. Algoritmo RSA
    Por FranGK en el foro Programación
    Respuestas: 2
    Último mensaje: 17/12/2008, 18:53
  4. Algoritmo
    Por Ana Contreras en el foro Off Topic
    Respuestas: 0
    Último mensaje: 25/07/2008, 21:39
  5. algoritmo kruskal
    Por ricky21 en el foro Programación
    Respuestas: 1
    Último mensaje: 17/04/2007, 20:22

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •