#include <Arduino.h>
#include <DHT.h>
#include <AESLib.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
AESLib aesLib;
// AES 128-bit key
byte aes_key[] = {
0x2B,0x7E,0x15,0x16,
0x28,0xAE,0xD2,0xA6,
0xAB,0xF7,0x15,0x88,
0x09,0xCF,0x4F,0x3C
};
// Initial IV
byte original_iv[] = {
0x00,0x01,0x02,0x03,
0x04,0x05,0x06,0x07,
0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F
};
byte aes_iv[16];
char data[128];
char encrypted[256];
char decrypted[128];
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
sprintf(data, "Temp:%.2f Hum:%.2f", temp, hum);
Serial.print("Original: ");
Serial.println(data);
// Reset IV before encryption
memcpy(aes_iv, original_iv, 16);
aesLib.encrypt64(
(const byte*)data,
strlen(data),
encrypted,
aes_key,
128,
aes_iv
);
Serial.print("Encrypted: ");
Serial.println(encrypted);
// Reset IV before decryption
memcpy(aes_iv, original_iv, 16);
uint16_t decrypted_len = aesLib.decrypt64(
encrypted,
strlen(encrypted),
(byte*)decrypted,
aes_key,
128,
aes_iv
);
decrypted[decrypted_len] = '\0';
Serial.print("Decrypted: ");
Serial.println(decrypted);
Serial.println("----------------------");
delay(3000);
}