• Sábado 14 de Diciembre de 2024, 00:40

Autor Tema:  Como encriptar y desencriptar en C (uso code block)  (Leído 33005 veces)

maga10

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Como encriptar y desencriptar en C (uso code block)
« en: Jueves 3 de Diciembre de 2009, 18:54 »
0
Este es el codigo de lo que hice a la hora de compilarlo y ejecutarlo no hace nada, les agradeceria si alguien me pudiera ayudar..

/* Programa: Alumno: Practico N° 16, ejercicio 5
   Autor: Gutierrez, Carina Magali
   Fecha de entrga: 16/10/2009
   Turno: tarde
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char encriptar_texto(char *pCh[]);
char desencriptar_texto(char encriptado[]);
int main()
{
    char ch[20]={0}, encriptar, desencriptar, encriptado[20];
    char *pCh[20]={0};
    int i;

    printf("ingrese un texto:  ");
    scanf("%s", ch);

    for (i=0 ; i<20 ; i++)
    {
        pCh = &ch;
    }

    encriptar = encriptar_texto(pCh);
    printf("nEl texto encriptado es: %c", encriptar);

    desencriptar = desencriptar_texto(encriptado);
    printf("nEl texto desencriptado es: %c", desencriptar);

    return 0;
}

char encriptar_texto(char *pCh[])
{
    char encriptado[20];
    int i;

    for (i=0 ; i!='n' ; i++)
    {
        encriptado= *pCh + 3;
        //printf("nEl texto encriptado es: %c", encriptado);
    }
    return 0;
}

char desencriptar_texto(char encriptado[])
{
    char desencriptado[20];
    int i;

    for (i=0 ; i!='n' ; i++)
    {
        desencriptado = encriptado - 3;
        //printf("nEl texto desencriptado es: %c", desencriptado);
    }
    return 0;
}

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Como encriptar y desencriptar en C (uso code block)
« Respuesta #1 en: Jueves 3 de Diciembre de 2009, 21:12 »
0
Tienes varios errores.

1. En las funciones encriptar y desencriptar regresas un char, pero en el return de las funciones pones 0, o sea nada.

2. Utilizas variables de tipo char para guardar los textos encriptados/desencriptados, cuando deberias utilizar arreglos de char, o sea, encriptar[20], desencriptar[20].

3. La condicion de los ciclos for esta equivocada, preguntas i = 'n', cuando deberia ser cadena != '', ya que lo que debes preguntar es si llegamos al fin de la cadena, ademas '' es el terminador de las cadenas.

4. Para imprimir la cadena encriptada/desencriptada utilizas %c, deberias ser %s, una vez que cambies las variables encriptar/desencriptar de tipo char a tipo arreglo de char (o sea, cadena).

5. Tus funciones encriptar/desencriptar regresan un char, cuando deberian regresar un char* (puntero a char), aunque te recomendaria que en lugar de funciones que regresen un valor, utilices funciones void, y mejor pongas como parametros la cadena sin encriptar y la cadena encriptada en la primera funcion, y en la segunda funcion pon como parametro la cadena encriptada y la cadena desencriptada.

Esos serian los principales, corrijelos, y suerte.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Como encriptar y desencriptar en C (uso code block)
« Respuesta #2 en: Viernes 4 de Diciembre de 2009, 07:58 »
0
No quiero ser sapo, pero publicaste este mismo mensaje mas de una vez?
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

maga10

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Como encriptar y desencriptar en C (uso code block)
« Respuesta #3 en: Viernes 18 de Diciembre de 2009, 20:38 »
0
Aca esta el codigo mejorado y andando por ahi a alguien le sirve, yo estuve buscando algo asi y no encontre en ningun lado!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define N 80

void encriptarFrase();
void desencriptarFrase();

int largo;
char frase[N];

int main ()
{
    printf("Ingrese la frase: ");
    gets(frase);

    largo = strlen(frase);

    encriptarFrase();
    printf("La frase encriptada es: %sn",frase);

    desencriptarFrase();
    printf("La dfrase desencriptada es: %sn",frase);
    return 0;
}

void encriptarFrase ()
{
    int i;

    for(i=0 ; i<largo ; ++i)
    {
        //convierte las minuscalas a mayuscula.
        *(frase + i) = toupper(*(frase + i));

        //descarta los digitos
        if(isalpha(*(frase + i)))
        {
            //verifica los casos especiales X-Y-Z
            if(*(frase + i) > 87)
            {
                *(frase+i) = *(frase+i) - 23;
            }
            else
            {
                *(frase + i) = *(frase + i) + 3;
            }
        }
    }
}

void desencriptarFrase ()
{
    int i;

    for(i=0 ; i<largo ; ++i)
    {
        if(isalpha(*(frase + i)))
        {
            if(*(frase + i) < 68)
            {
                *(frase+i)= *(frase+i) + 23;
            }
            else
            {
                *(frase+i)= *(frase+i) - 3;
            }
        }
    }
}