#include <Arduino.h>
#include <DHT.h>
#include <AESLib.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
AESLib aesLib;
// 16 byte AES key
byte aes_key[] = {
0x2B,0x7E,0x15,0x16,
0x28,0xAE,0xD2,0xA6,
0xAB,0xF7,0x15,0x88,
0x09,0xCF,0x4F,0x3C
};
// initialization vector
byte aes_iv[16] = {0};
char data[64];
char encrypted[256];
char decrypted[128];
void setup() {
Serial.begin(115200);
delay(1000);
dht.begin();
Serial.println("=== ESP32 AES Encryption Simulation ===");
}
void loop() {
delay(3000);
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("Sensor read failed!");
return;
}
Serial.println("\n-------------------------");
Serial.print("Temperature: ");
Serial.println(temp);
Serial.print("Humidity: ");
Serial.println(hum);
// create plaintext payload
sprintf(data, "T:%.2f,H:%.2f", temp, hum);
Serial.print("Plaintext: ");
Serial.println(data);
// Reset IV before encryption
byte iv_enc[16];
memcpy(iv_enc, aes_iv, sizeof(aes_iv));
aesLib.encrypt64(
data,
strlen(data),
encrypted,
aes_key,
sizeof(aes_key),
iv_enc
);
Serial.print("Encrypted: ");
Serial.println(encrypted);
// Reset IV before decryption
byte iv_dec[16];
memcpy(iv_dec, aes_iv, sizeof(aes_iv));
aesLib.decrypt64(
encrypted,
strlen(encrypted),
decrypted,
aes_key,
sizeof(aes_key),
iv_dec
);
Serial.print("Decrypted: ");
Serial.println(decrypted);
}