Estoy haciendo un ejercicio que pide que introduzca un numero de 4 dígitos, y que encripte el entero reemplazando cada dígito con el residuo de la división entre 10 de la suma de dicho dígito mas 7, y que luego reemplace el primer dígito con el tercero, y el segundo con el cuarto para desplegar el nuevo valor:
Código:
#include <stdio.h>
int main ()
{
int numero;
int n1, n2, n3, n4;
printf("Introduzca el dato de 4 digitos: ");
scanf("%d", &numero);
n4 = numero % 10;
numero /=10;
n3 = numero % 10; //separando digitos
numero /=10;
n2 = numero % 10;
n1 = numero / 10;
n1 += 7;
n2 += 7;
n3 += 7; //sumandoles 7
n4 += 7;
n1 %= 10;
n2 %= 10;
n3 %= 10; //sacando residuo
n4 %= 10;
printf("%d%d%d%d\n", n3, n4, n1, n2); //devolviendo dato encriptado
system ("pause");
return 0;
}
La duda que tengo es que ahora no se como desencriptarlo, por ejemplo si en el primer programa pongo 1234, me devuelve 0189, y este mismo numero me tiene que devolver 1234 en el otro programa, pero no lo he conseguido:
Código:
#include <stdio.h>
int main ()
{
int numero;
int n1, n2, n3, n4;
printf("Introduzca numero encriptado: ");
scanf("%d", &numero);
n4 = numero % 10;
numero /= 10;
n3 = numero % 10;
numero /= 10; //separando digitos
n2 = numero % 10;
n1 = numero / 10;
n4 -= 7;
n3 -= 7;
n2 -= 7;
n1 -= 7;
n4 %= 10;
n3 %= 10;
n2 %= 10;
n1 %= 10;
printf("%d%d%d%d\n", n3, n4, n1, n2);
system ("pause");
return 0;
}
Quisiera que me dieran una pista, o me corrijan si ando mal en algo, porque ya he intentado de varias formas y no me da. Gracias!