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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema criptograma
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problema criptograma  (Leído 5,681 veces)
i-node

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Problema criptograma
« en: 1 Mayo 2016, 20:01 pm »

Hola,

Tengo el siguiente enunciado, pero como no tengo ni idea de criptografia ni tampoco mucho de matematicas, la verdad.. No se como realizar el segundo programa. El primero ya esta hecho y os lo pongo aqui.

Gracias.

Una empresa desea transmitir datos via telefonica, pero le preocupa que sus telefonos pudieran ser intervenidos. Todos los datos se transmiten como enteros de cuatro digitos. La empresa le ha pedido que escriba un programa que encripte los datos para que puiedan transmitirlos de manera mas segura. Su programa debe leer un entero de cuatro digitos y encriptarlo de la siguiente manera: reemplace cada digito por (la suma de ese digito mas 7) modulo 10. Despues intercambie el primer digito con el tercero, intercambie el segundo con el cuarto, y despliegue el entero cifrado. Escriba un programa separado que ingrese el entero de cuatro digitos cifrado, y lo desencripte para formar el numero original.

Código:
#include <iostream>

using std::cout;
using std::cin;

int main() {
const int tamano = 4;
int numero = 0;
int numeroTmp[tamano];
int cont = tamano -1;

while(numero < 1000 || numero > 9999) {
cout << "Introduce el mensaje de 4 digitos: ";
cin >> numero;
}

while(numero != 0) {
numeroTmp[cont] = ((numero % 10) + 7) % 10; // Separamos los digitos, sumamos 7 y hacemos modulo 10, colocandolos del derecho
numero = numero / 10;
cont--;
}

numero = numeroTmp[0]; // Comienza el intercambio del primer digito con el tercero
numeroTmp[0] = numeroTmp[2];
numeroTmp[2] = numero;

numero = numeroTmp[1]; // Comienza el intercambio del segundo digito con el cuarto
numeroTmp[1] = numeroTmp[3];
numeroTmp[3] = numero;

cout << "El numero cifrado es: ";

for(int i= 0; i<tamano; i++) // Desplegamos numero cifrado
cout << numeroTmp[i];

cout << "\n";

return 0;
}


En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Problema criptograma
« Respuesta #1 en: 1 Mayo 2016, 20:41 pm »

No veo funciones, necesitas dos una ida y otra de vuelta


En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
i-node

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Problema criptograma
« Respuesta #2 en: 1 Mayo 2016, 20:49 pm »

No veo funciones, necesitas dos una ida y otra de vuelta

Se podria hacer con funciones, desde luego. Pero no es necesario. El ejercicio pide dos programas, el primero ya esta hecho. Y puedo hacer el segundo, siempre y cuando sepa que es lo que debe hacer para calcular el numero de vuelta partiendo de el numero cifrado.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema criptograma
« Respuesta #3 en: 1 Mayo 2016, 21:59 pm »

Yo lo he sacado con papel y boli  ;D

Pero bueno: aquí va una pista... dos pistas en una sola idea:

1 => 8
5 => 2

entonces

2 => 5
8 => 1

¿Qué ves?
En línea

i-node

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Problema criptograma
« Respuesta #4 en: 1 Mayo 2016, 22:11 pm »

Yo lo he sacado con papel y boli  ;D

Pero bueno: aquí va una pista... dos pistas en una sola idea:

1 => 8
5 => 2

entonces

2 => 5
8 => 1

¿Qué ves?

Unas equivalencias, no? Que cada numero, cifrado, siempre tendra un valor. Es decir, el 1, tras encriptarlo, siempre tendra un valor de 8 y el 5 de 2.

Muchas gracias.
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Problema criptograma
« Respuesta #5 en: 1 Mayo 2016, 22:21 pm »

Lo que te dice @MAFUS es:

Código
  1. decript(encryp(valor)) = valor

Es un tipo de encriptacion simple porque la funcion es biyectiva, en la vida real no pasa eso  ;D


En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema criptograma
« Respuesta #6 en: 1 Mayo 2016, 22:30 pm »

cifrado: Sumar 7 al valor. Si el resultado es mayor de 10 restarle 10.
Visto así sacar el descifrado no debe ser difícil.
En línea

i-node

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Problema criptograma
« Respuesta #7 en: 1 Mayo 2016, 22:33 pm »

Lo que te dice @MAFUS es:

Código
  1. decript(encryp(valor)) = valor

Es un tipo de encriptacion simple porque la funcion es biyectiva, en la vida real no pasa eso  ;D




No habia leido ese termino (funcion biyectiva) en mi vida. Tendre que investigar y buscar codigo de ejemplo en Google.

cifrado: Sumar 7 al valor. Si el resultado es mayor de 10 restarle 10.
Visto así sacar el descifrado no debe ser difícil.

No, no le resta 10 si es mayor de 10, hace un modulo, no una division.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema criptograma
« Respuesta #8 en: 1 Mayo 2016, 22:36 pm »

Hazlo con papel y boli, verás lo que te digo  ;)
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Problema criptograma
« Respuesta #9 en: 1 Mayo 2016, 23:10 pm »

Lo mejor para este tipo de ejercicios es, como bien ha apuntado MAFUS, escribir la codificación de cada posible dígito sobre papel.

Tenemos que para codificar los dígitos tenemos que sumarles 7 y hacerle el módulo con 10. Si seguimos esta regla, cada dígito quedaría así:
0 -> 7
1 -> 8
2 -> 9
3 -> 0
4 -> 1
...
9 -> 6

Sabiendo el patrón que se produce, es sencillo hallar la forma de volver atrás...
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,675 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
Criptograma fácil y que no se resolver
Criptografía
Puntoinfinito 5 5,562 Último mensaje 21 Mayo 2013, 17:50 pm
por salacker-ng MD5
[RETO]Criptograma
Criptografía
wizardsec 0 3,523 Último mensaje 21 Febrero 2015, 03:17 am
por wizardsec
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines