#include <mbedtls/aes.h>
void encrypt(const char *plainText, const char *key, unsigned char *outputBuffer) {
mbedtls_aes_context aes;
mbedtls_aes_init(&aes);
mbedtls_aes_setkey_enc(&aes, (const unsigned char*) key, strlen(key) * 8);
mbedtls_aes_crypt_ecb(&aes, MBEDTLS_AES_ENCRYPT, (const unsigned char*) plainText, outputBuffer);
mbedtls_aes_free(&aes);
}
void decrypt(unsigned char *cipherText, const char *key, unsigned char *outputBuffer) {
mbedtls_aes_context aes;
mbedtls_aes_init(&aes);
mbedtls_aes_setkey_dec(&aes, (const unsigned char*) key, strlen(key) * 8);
mbedtls_aes_crypt_ecb(&aes, MBEDTLS_AES_DECRYPT, cipherText, outputBuffer);
mbedtls_aes_free(&aes);
}
void setup() {
Serial.begin(115200);
const char key[17] = "abcdefghijklmnop";
const char plainText[17] = "1234567890123456";
unsigned char cipherText[17] = {'\0'};
unsigned char decryptedText[17] = {'\0'};
encrypt(plainText, key, cipherText);
Serial.print("Original plain text: ");
Serial.println(plainText);
Serial.print("Cipher text: ");
for (int i = 0; i < 16; i++)
{
char str[3];
sprintf(str, "%02x", (int)cipherText[i]);
Serial.print(str);
}
Serial.println();
decrypt(cipherText, key, decryptedText); // Decrypting the cipher text
Serial.print("Deciphered text: ");
for (int i = 0; i < 16; i++)
{
Serial.print((char)decryptedText[i]);
}
Serial.println();
}
void loop() {
delay(10000);
}