AJDERNIZ

Práctica: cifrado de Vigenere

Trampa

Me dio pereza hacer el cifrado a mano, entonces escribí un programa en C para hacerlo automáticamente.

#include 
#include  /* calloc */
#include  /* strlen */

int main(int argc, char **argv) {

	int alphabet_size;

	int index;
	int key_index;

	size_t message_length;
	size_t key_length;

	char *message = NULL;
	char *key = NULL;
	char *encrypted_message = NULL;

	if (argc != 3) {
		puts("Not enough arguments");
		return EXIT_FAILURE;
	}

	alphabet_size = ('Z' - 'A') + 1;

	message = argv[1];
	message_length = strlen(message);
	for (index = 0; index < message_length; index++) {
		if (message[index] < 'A' || 'Z' < message[index]) {
			if (message[index] != ' ') {
				puts("Invalid message");
				return EXIT_FAILURE;
			}
		}
	}

	key = argv[2];
	key_length = strlen(key);
	for (index = 0; index < key_length; index++) {
		if (key[index] < 'A' || 'Z' < key[index]) {
			puts("Invalid key");
			return EXIT_FAILURE;
		}
	}

	encrypted_message = calloc(sizeof(char), message_length + 1);
	if (NULL == encrypted_message) {
		puts("Could not allocate encrypted_message");
		return EXIT_FAILURE;
	}

	puts("M K E");
	puts("=====");
	for(index = 0, key_index = 0; index < message_length;
			index++, key_index = (key_index + 1) % key_length) {
		if (' ' == message[index]) {
			encrypted_message[index] = message[index];
			puts("");
			index++;
		}
		encrypted_message[index] =
			(message[index] + key[key_index]) % alphabet_size + 'A';
		printf("%c %c %c\n", message[index], key[key_index],
				encrypted_message[index]);
	}
	encrypted_message[message_length] = '\0';

	printf("Message: %s\n", message);
	printf("Key: %s\n", key);
	printf("Encrypted: %s\n", encrypted_message);

	free(encrypted_message);
	return EXIT_SUCCESS;
}
	

Lista de mensajes para cifrar

    • Mensaje: LA SEGURIDAD ES IMPORTANTE
    • Clave: CLAVE
    • Cifrado: NL SZKWCIYEF PS DQRZROEPEE
    • Mensaje: LOS DATOS DEBEN ESTAR PROTEGIDOS
    • Clave: REDES
    • Cifrado: CSV HSKSV HWSIQ IKKEU TJFXHKAUSV
    • Mensaje: EL CIFRADO VIGENERE ES SEGURO
    • Clave: CIFRA
    • Cifrado: GT HZFTIIF VKOJEETM JJ SGOZIO
    • Mensaje: MANTENER LA INFORMACION SEGURA
    • Clave: SEGURIDAD
    • Cifrado: EETNVVHR OS MTZFZPAFAST MVOXRD
    • Mensaje: ENCRIPTAR LOS MENSAJES ES CLAVE
    • Clave: MENSAJE
    • Cifrado: QRPJIYXMV YGS VIZWNBEB IE GYSVN
    • Mensaje: LA INFORMACION PRIVADA ES VALIOSA
    • Clave: PRIVADO
    • Cifrado: AR QIFRFBRKDOQ DGZDVDD SH MIGIRGP
    • Mensaje: DEBEMOS USAR CLAVES SEGURAS SIEMPRE
    • Clave: PROTECCION
    • Cifrado: SVPXQQU CGNG TZTZGU ASTJIOL WKGUDET
    • Mensaje: LOS SISTEMAS DEBEN SER CONFIABLES
    • Clave: SEGURIDAD
    • Cifrado: DSY MZAWEPSW JYSMQ SHJ GUHWQDBOWW
    • Mensaje: EL INTERNET ES UN LUGAR PELIGROSO
    • Clave: CIBER
    • Cifrado: GT JRKGZOIK GA VR CWOBV GGTJKIQAP
    • Mensaje: LOS ATAQUES CIBERNETICOS SON FRECUENTES
    • Clave: DEFENSA
    • Cifrado: OSX EGSQXIX GVTEURJXVUOV WTR SJEFYJRGWS