Neil Thiessen
/
AES_HelloWorld
A simple serial test program for the AES library.
main.cpp@1:efd619e002fd, 2016-09-15 (annotated)
- Committer:
- neilt6
- Date:
- Thu Sep 15 15:36:13 2016 +0000
- Revision:
- 1:efd619e002fd
- Parent:
- 0:6cfe831d7c16
Updated AES and mbed libraries
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
neilt6 | 0:6cfe831d7c16 | 1 | #include "mbed.h" |
neilt6 | 0:6cfe831d7c16 | 2 | #include "AES.h" |
neilt6 | 0:6cfe831d7c16 | 3 | |
neilt6 | 0:6cfe831d7c16 | 4 | char message[] = { |
neilt6 | 0:6cfe831d7c16 | 5 | "Hello World!" |
neilt6 | 0:6cfe831d7c16 | 6 | }; |
neilt6 | 0:6cfe831d7c16 | 7 | |
neilt6 | 0:6cfe831d7c16 | 8 | const char key[32] = { |
neilt6 | 0:6cfe831d7c16 | 9 | 0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE, |
neilt6 | 0:6cfe831d7c16 | 10 | 0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81, |
neilt6 | 0:6cfe831d7c16 | 11 | 0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7, |
neilt6 | 0:6cfe831d7c16 | 12 | 0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4 |
neilt6 | 0:6cfe831d7c16 | 13 | }; |
neilt6 | 0:6cfe831d7c16 | 14 | |
neilt6 | 0:6cfe831d7c16 | 15 | const char iv[16] = { |
neilt6 | 0:6cfe831d7c16 | 16 | 0x74, 0x11, 0xF0, 0x45, 0xD6, 0xA4, 0x3F, 0x69, |
neilt6 | 0:6cfe831d7c16 | 17 | 0x18, 0xC6, 0x75, 0x42, 0xDF, 0x4C, 0xA7, 0x84 |
neilt6 | 0:6cfe831d7c16 | 18 | }; |
neilt6 | 0:6cfe831d7c16 | 19 | |
neilt6 | 0:6cfe831d7c16 | 20 | void printData(const void* data, size_t length) |
neilt6 | 0:6cfe831d7c16 | 21 | { |
neilt6 | 0:6cfe831d7c16 | 22 | const char* dataBytes = (const char*)data; |
neilt6 | 0:6cfe831d7c16 | 23 | for (size_t i = 0; i < length; i++) { |
neilt6 | 0:6cfe831d7c16 | 24 | if ((i % 8) == 0) |
neilt6 | 0:6cfe831d7c16 | 25 | printf("\n\t"); |
neilt6 | 0:6cfe831d7c16 | 26 | printf("0x%02X, ", dataBytes[i]); |
neilt6 | 0:6cfe831d7c16 | 27 | } |
neilt6 | 0:6cfe831d7c16 | 28 | printf("\n"); |
neilt6 | 0:6cfe831d7c16 | 29 | } |
neilt6 | 0:6cfe831d7c16 | 30 | |
neilt6 | 0:6cfe831d7c16 | 31 | int main() |
neilt6 | 0:6cfe831d7c16 | 32 | { |
neilt6 | 0:6cfe831d7c16 | 33 | AES aes; |
neilt6 | 0:6cfe831d7c16 | 34 | |
neilt6 | 0:6cfe831d7c16 | 35 | //Print the original message |
neilt6 | 0:6cfe831d7c16 | 36 | printf("Original message: \"%s\"", message); |
neilt6 | 0:6cfe831d7c16 | 37 | printData(message, sizeof(message)); |
neilt6 | 0:6cfe831d7c16 | 38 | |
neilt6 | 0:6cfe831d7c16 | 39 | //Encrypt the message in-place |
neilt6 | 0:6cfe831d7c16 | 40 | aes.setup(key, AES::KEY_256, AES::MODE_CBC, iv); |
neilt6 | 0:6cfe831d7c16 | 41 | aes.encrypt(message, sizeof(message)); |
neilt6 | 0:6cfe831d7c16 | 42 | aes.clear(); |
neilt6 | 0:6cfe831d7c16 | 43 | |
neilt6 | 0:6cfe831d7c16 | 44 | //Print the encrypted message |
neilt6 | 0:6cfe831d7c16 | 45 | printf("Encrypted message:"); |
neilt6 | 0:6cfe831d7c16 | 46 | printData(message, sizeof(message)); |
neilt6 | 0:6cfe831d7c16 | 47 | |
neilt6 | 0:6cfe831d7c16 | 48 | //Decrypt the message in-place |
neilt6 | 0:6cfe831d7c16 | 49 | aes.setup(key, AES::KEY_256, AES::MODE_CBC, iv); |
neilt6 | 0:6cfe831d7c16 | 50 | aes.decrypt(message, sizeof(message)); |
neilt6 | 0:6cfe831d7c16 | 51 | aes.clear(); |
neilt6 | 0:6cfe831d7c16 | 52 | |
neilt6 | 0:6cfe831d7c16 | 53 | //Print the decrypted message |
neilt6 | 0:6cfe831d7c16 | 54 | printf("Decrypted message: \"%s\"", message); |
neilt6 | 0:6cfe831d7c16 | 55 | printData(message, sizeof(message)); |
neilt6 | 0:6cfe831d7c16 | 56 | } |