Zoltan Hudak / Mbed OS Enigma_Hello

Dependencies:   Enigma

Committer:
hudakz
Date:
Mon Sep 23 07:50:57 2019 +0000
Revision:
1:ad5fb6f2ab3c
Parent:
0:3381509d20af
Child:
2:ac7a3cea1757
Example for the Enigma encryption library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:3381509d20af 1 #include "mbed.h"
hudakz 0:3381509d20af 2 #include "Enigma.h"
hudakz 0:3381509d20af 3
hudakz 0:3381509d20af 4 Serial pc(USBTX, USBRX);
hudakz 0:3381509d20af 5 DigitalOut led1(LED1);
hudakz 1:ad5fb6f2ab3c 6 Enigma enigma(Enigma::ROTOR_IV, Enigma::ROTOR_I, Enigma::ROTOR_III, 126, 247, 14);
hudakz 0:3381509d20af 7
hudakz 0:3381509d20af 8 /**
hudakz 0:3381509d20af 9 * @brief
hudakz 0:3381509d20af 10 * @note
hudakz 0:3381509d20af 11 * @param
hudakz 0:3381509d20af 12 * @retval
hudakz 0:3381509d20af 13 */
hudakz 0:3381509d20af 14 int main()
hudakz 0:3381509d20af 15 {
hudakz 1:ad5fb6f2ab3c 16 char message[] = "Hello World!"; // A message (byte array) to encrypt.
hudakz 1:ad5fb6f2ab3c 17 uint8_t* encrypted = new uint8_t[strlen(message)];
hudakz 1:ad5fb6f2ab3c 18 uint8_t* decrypted = new uint8_t[strlen(message) + 1];
hudakz 0:3381509d20af 19
hudakz 1:ad5fb6f2ab3c 20 // Helper functions for maintenance only:
hudakz 1:ad5fb6f2ab3c 21 //enigma.genRotorWiring("IV", 213); // Generate new wiring for rotor IV.
hudakz 1:ad5fb6f2ab3c 22 //enigma.genReflectorWiring(6); // Generate new wiring for the reflector.
hudakz 0:3381509d20af 23
hudakz 0:3381509d20af 24 while (true) {
hudakz 1:ad5fb6f2ab3c 25 pc.printf("------------------------------\r\n");
hudakz 1:ad5fb6f2ab3c 26 pc.printf("%s\r\n\r\n", message);
hudakz 0:3381509d20af 27
hudakz 1:ad5fb6f2ab3c 28 // Encrypt and print the encrypted message.
hudakz 1:ad5fb6f2ab3c 29 enigma.encrypt(encrypted, (uint8_t*)message, strlen(message));
hudakz 0:3381509d20af 30 for (size_t i = 0; i < strlen(message); i++) {
hudakz 0:3381509d20af 31 pc.putc(encrypted[i]);
hudakz 0:3381509d20af 32 }
hudakz 1:ad5fb6f2ab3c 33 pc.printf("\r\n\r\n");
hudakz 0:3381509d20af 34
hudakz 1:ad5fb6f2ab3c 35 // Decrypt the 'encrypted' array and print.
hudakz 0:3381509d20af 36 enigma.decrypt(decrypted, encrypted, strlen(message));
hudakz 1:ad5fb6f2ab3c 37 decrypted[strlen(message)] = '\0'; // Terminate the c-style string (needed for 'printf').
hudakz 1:ad5fb6f2ab3c 38 pc.printf("%s\r\n\r\n", decrypted);
hudakz 1:ad5fb6f2ab3c 39
hudakz 0:3381509d20af 40 led1 = !led1;
hudakz 0:3381509d20af 41 wait(2);
hudakz 0:3381509d20af 42 }
hudakz 0:3381509d20af 43 }