Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:ad5fb6f2ab3c, 2019-09-23 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |