elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como cifrar letra por letra en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 4 5 [6] 7 Ir Abajo Respuesta Imprimir
Autor Tema: Como cifrar letra por letra en C++  (Leído 64,921 veces)
Royca3

Desconectado Desconectado

Mensajes: 45



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #50 en: 13 Junio 2013, 00:24 am »

Creo que no hace falta compilarlo, con la ventana de comandos de windows probablemente baste.

Edito: Si que hace falta por lo menos un ensamblador.

Salu10

Y como lo compilo y ejecuto?
 :-X


En línea

Homo erectus
daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #51 en: 13 Junio 2013, 00:30 am »

Y como lo compilo y ejecuto?
 :-X

no te lies con asm aun


En línea

buenas
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #52 en: 13 Junio 2013, 01:13 am »

Y como lo compilo y ejecuto?
 :-X

Creo que esto bastará, no programo en windows.

Código
  1. char *cesar (char *ptr)
  2.  
  3. {
  4.  
  5. __asm
  6.  
  7.  {
  8.        xor eax, eax
  9.        xor ecx, ecx
  10.        mov edi, ebx
  11.  
  12. _C.0:
  13.        inc ecx
  14.        scasb
  15.        jne _C.0
  16.  
  17. _C.1:
  18.        dec edi
  19.        add byte ptr [edi], 0x3
  20.        dec ecx
  21.        jne _C.1
  22.        mov eax, edi
  23.  }
  24.  
  25. }

La llamas como si fuera una función de C, y esta te devuelve un puntero, haber si te funciona.

Un saludo.
En línea

Royca3

Desconectado Desconectado

Mensajes: 45



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #53 en: 13 Junio 2013, 01:26 am »

La verdad es que no se NADA sobre ASM u__u y tienes razón no me meteré aun con ASM  ;D

Saludos.
En línea

Homo erectus
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #54 en: 13 Junio 2013, 16:48 pm »

El cifrado César lo único que hace para cifrar es sumar 3 a cada carácter y para descifrar restar, por lo que he leido.

Pues no, no es añadir estrictamente 3 sino un valor que el usuario indique. Vamos que es variable.

Ese código es el cifrado César, solo para el abecedario lo veo una tonteria.


Creo que no has pillado la "intención" de la propuesta. Se trata de ver el "potencial" de los intervinientes en el foro y que en base a este tema hagan propuestas ingeniosasy/o "raritas" con la única finalidad de exprimir el ingenio, plasmar los conocimientos y ayudar/enseñar unos de otros.

Tu propuesta, por ejemplo, sería clasificada como "rarita", ya que se sale del contexto habitual y,como tal propuesta "rarita" yo la aplaudo. Eso sí, echo en falta que expliques a los neófitos en el tema del ensamblador qué herramientas serían necesarias para poder ejecutar el código que planteas. Ya que haces una propuesta fuera del contexto C/C++ una breve explicación no nos vendría mal a algunos.


Saluditos!
   

En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #55 en: 14 Junio 2013, 11:11 am »


Un "collage" con las propuestas de cypascal y CCross reunidas pero con función:

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. void cesar (char *cadena , int letra, int des);
  4. int main()
  5. {
  6.    int  des=0, letra=0;
  7.    char cadena[256]={0};
  8.    puts("Ingrese una cadena: ");
  9.    gets (cadena);
  10.    //fgets (cadena,255,stdin);
  11.    do
  12.    {
  13.        puts("\nIndica el desplazamiento: ");
  14.        scanf ("%d",&n);
  15.        while (getchar()!='\n');
  16.    }while (n<0 || n>25);
  17.    cesar (cadena,97,des);
  18.    printf("\nCifrado es: %s \n", cadena);
  19.    cesar (cadena,122,-des);
  20.    printf("\nDecifrado es: %s \n", cadena);
  21.    return 0;
  22. }
  23. void cesar (char cadena[] , int letra, int des)
  24. {
  25.    int i,letra1=0;
  26.    for(i = 0; cadena[i]; i++)
  27.     {
  28.        if ( cadena[i]==' ')
  29.            continue;
  30.        letra1=letra;
  31.        if(isupper(cadena[i])!=0)
  32.            letra1-=32;
  33.        cadena[i] =((cadena[i]-letra1+des)%26)+letra1;
  34.      }
  35. }
  36.  

Saluditos!
   


P.D:

Creo que esto bastará, no programo en windows.

Código
  1. char *cesar (char *ptr)
  2.  
  3. {
  4.  
  5. __asm
  6. ..............
  7. }
  8.  

¿Una función char que no retorna nada?.
En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #56 en: 14 Junio 2013, 12:22 pm »

P.D:

¿Una función char que no retorna nada?.

Código
  1. ret
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #57 en: 16 Junio 2013, 19:37 pm »

Código
  1. ret

¿ret?, en C/C++ lo que yo conozco es return. Y aún así no funciona. ¿Podrías indicarnos que programa usas para programar en ensamblador?.

Y puestos a buscar soluciones "curiosas" me dio por encontrar una solución en que sólo se sume y reste el desplazamiento y sin más librería que stdio. Eso sí, he tenido que usar un "señor" array, pero conseguí el propósito mencionado:


Código
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.    char frase[256] = {0};
  5.    int i=0,j=0,desplazamiento=0;
  6.    char abc[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"};
  7.    while(1)
  8.    {
  9.        printf("Ingrese una cadena: ");
  10.        fgets (frase,255,stdin);
  11.        do
  12.        {
  13.            puts("Ingrese desplazamiento: (1-25) ");
  14.            scanf ("%d",&desplazamiento);
  15.            while (getchar()!='\n');
  16.        }while (desplazamiento<0 || desplazamiento>25);
  17.        for(i = 0; frase[i]; i++)
  18.        {
  19.            for(j = 0; j<26; j++)
  20.            {
  21.  
  22.                if ( frase[i]==' ')
  23.                    break;
  24.                if (frase[i]==abc[j])
  25.                {
  26.                    frase[i] =  abc[j+ desplazamiento];
  27.                    break;
  28.                }
  29.            }
  30.            for(j = 78; j<104; j++)
  31.            {
  32.  
  33.                if ( frase[i]==' ')
  34.                    break;
  35.                if (frase[i]==abc[j])
  36.                {
  37.                    frase[i] =  abc[j+ desplazamiento];
  38.                    break;
  39.                }
  40.            }
  41.        }
  42.        printf("Cadena cifrada: %s\n\n", frase);
  43.        for(i = 0; frase[i]; i++)
  44.          {
  45.            for(j = 52;j<78 ; j++)
  46.            {
  47.                if ( frase[i]==' ')
  48.                    break;
  49.                if (frase[i]==abc[j])
  50.                {
  51.                    frase[i] =  abc[j- desplazamiento];
  52.                    break;
  53.                }
  54.            }
  55.            for(j = 130;j<156 ; j++)
  56.            {
  57.                if ( frase[i]==' ')
  58.                    break;
  59.                if (frase[i]==abc[j])
  60.                {
  61.                    frase[i] =  abc[j- desplazamiento];
  62.                    break;
  63.                }
  64.            }
  65.        }
  66.        printf("Cadena descifrada: %s\n", frase);
  67.    }
  68.    return 0;
  69. }
  70.  

Saluditos!

« Última modificación: 16 Junio 2013, 20:00 pm por leosansan » En línea

Royca3

Desconectado Desconectado

Mensajes: 45



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #58 en: 16 Junio 2013, 21:03 pm »

El código es similar al anterior
En línea

Homo erectus
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #59 en: 17 Junio 2013, 08:47 am »

¿ret?, en C/C++ lo que yo conozco es return. Y aún así no funciona. ¿Podrías indicarnos que programa usas para programar en ensamblador?.

GAS, ld y cualquier editor de texto.

Y puestos a buscar soluciones "curiosas" me dio por encontrar una solución en que sólo se sume y reste el desplazamiento y sin más librería que stdio. Eso sí, he tenido que usar un "señor" array, pero conseguí el propósito mencionado

Código demasiado largo y poco eficiente, para algo tan simple como el cifrado de César, y sin hablar del array.

Código
  1.        printf("Ingrese una cadena: ");
  2.        fgets (frase,255,stdin);
  3.  
  4.         puts("Ingrese desplazamiento: (1-25) ");
  5.         scanf ("%d",&desplazamiento);
  6.  

Podrías utilizar los parametros argv, te ahorras ese fgets y esa aberración llamada scanf.

Código
  1. while (getchar()!='\n');

Venga hombre.

Un saludo.

P.D: Yo dejo el tema, desde mi punto de vista un desplazamiento de bits o un xor, es mucho mejor que el de César, yo no daría más importancia a esto de verdad.
En línea

Páginas: 1 2 3 4 5 [6] 7 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codificacion en archivos bat, letra ñ
Scripting
santi810 3 12,239 Último mensaje 1 Diciembre 2013, 18:57 pm
por Eleкtro
[DUDA] Como Desactivar Dispositivos Portátiles Para Que Se Le Asigne Una Letra
Windows
KZN 3 2,916 Último mensaje 11 Marzo 2014, 17:00 pm
por Randomize
Dibujar letra 'T'
PHP
luchi 2 2,387 Último mensaje 20 Abril 2014, 22:14 pm
por luchi
Como con una letra direccionarme a la tabla/registro?
Programación C/C++
enzopaez14 1 2,109 Último mensaje 5 Septiembre 2016, 02:50 am
por AlbertoBSD
Comparar letra una letra en un array, con una letra del abcdario
Programación C/C++
Naimaderis 2 3,964 Último mensaje 10 Marzo 2017, 04:24 am
por Naimaderis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines