#include <Arduino.h>
#include <DHT.h>
#define DHT_PIN 4
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
const uint8_t SECRET_KEY[] = {0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6};
const int KEY_LEN = 8;
void xorEncrypt(uint8_t* data, int len) {
for (int i = 0; i < len; i++)
data[i] ^= SECRET_KEY[i % KEY_LEN];
}
void printHex(uint8_t* data, int len) {
for (int i = 0; i < len; i++) {
if (data[i] < 0x10) Serial.print("0");
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.println();
}
void setup() {
Serial.begin(115200);
delay(1000);
dht.begin();
Serial.println("=== ESP32 Sensor Encryption Simulation ===");
}
void loop() {
delay(3000);
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("DHT22 Error: Failed to read!");
return;
}
Serial.println("\n-------------------------------");
Serial.println("Raw Sensor Data:");
Serial.print(" Temperature : "); Serial.print(temp); Serial.println(" C");
Serial.print(" Humidity : "); Serial.print(hum); Serial.println(" %");
uint8_t payload[8];
memcpy(&payload[0], &temp, 4);
memcpy(&payload[4], &hum, 4);
Serial.print("Plaintext (hex): ");
printHex(payload, 8);
xorEncrypt(payload, 8);
Serial.print("Encrypted (hex): ");
printHex(payload, 8);
Serial.println("Transmitting encrypted payload...");
xorEncrypt(payload, 8);
float recv_temp, recv_hum;
memcpy(&recv_temp, &payload[0], 4);
memcpy(&recv_hum, &payload[4], 4);
Serial.print("Decrypted (hex): ");
printHex(payload, 8);
Serial.println("Recovered Data:");
Serial.print(" Temperature : "); Serial.print(recv_temp); Serial.println(" C");
Serial.print(" Humidity : "); Serial.print(recv_hum); Serial.println(" %");
}