Cifrado

Fernando Ruiz Laguna

/*He aquí un programa que realiza una operación de cifrado mediante dos parámetros (uno  multiplicativo y otro aditivo). La cadena ha de incluirse en minúsculas y sin espacios ya que de otra forma complicaría bastante el algoritmo requerido.*/

#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
int main()
{
int a,b;
int i,l;
char codigo[50];
char p;
int c[50];
cout << “Introduce el parametro a (entre 1 y 29)” << endl;
cin >> a;
cout << “Ahora introduce b (entre 0 y 28)” << endl;
cin >> b;
cout << “Introduce ahora el codigo a cifrar (sin espacios y en minusculas): ” << endl;
cin >> codigo;
l = strlen(codigo);
for(i=0;i<50;i++){
c[i] = int(codigo[i]);
c[i] = c[i]-96;
c[i] = ((c[i]*a+b)%29);
c[i] = (c[i]+96);
codigo[i] = char(c[i]);
}
for(i=(l);i<50;i++){
codigo[i] = char(32);
}
cout << “El mensaje cifrado es: ” << endl << codigo << endl;
system (“pause”);

}

Anuncios
Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

Una respuesta a Cifrado

  1. En general si es posible evitarlo, no hay que hacer depender un programa de lo que se suelen llamar ‘números mágicos’, es decir, número concretos que aparecen en el cuerpo del programa sin justificación alguna. En tu caso son 96, 28, 29. Cuando son necesarios se colocan al principio del programa con un #define XX y así se pueden controlar más fácilmente. En tu caso, posiblemente el 96 tiene relación con el ASCII de la ‘a’ que es 97, entonces mejor usar (‘a’-1). Los otros números 28 y 29 posiblemente tienen relación con la longitud del alfabeto anglosajón que es 26, así mejor usar en este caso (‘z’-‘a’+1). Quizás por esta razón al usar un módulo 29 te puedan aparecer los caracteres ‘{‘ y ‘|’, que son los dos siguientes a la ‘z’. Otro detalle que se puede mejorar es añadir el carácter ‘\o’ de final de cadena, en fin de llenarla de espacios en blanco.

    En resumen, hay varias mejoras (y/o correcciones) que podrías hacer en dicho programa.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s