// XTEA Encryption Code for Arduino
#include <Arduino.h>
#define NUM_ROUNDS 32
void XTEA_encrypt(uint32_t *v, const uint32_t *key) {
uint32_t v0 = v[0], v1 = v[1], sum = 0, delta = 0x9E3779B9;
for (uint8_t i = 0; i < NUM_ROUNDS; i++) {
v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
sum += delta;
v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum >> 11) & 3]);
}
v[0] = v0;
v[1] = v1;
}
void XTEA_decrypt(uint32_t *v, const uint32_t *key) {
uint32_t v0 = v[0], v1 = v[1], delta = 0x9E3779B9, sum = delta * NUM_ROUNDS;
for (uint8_t i = 0; i < NUM_ROUNDS; i++) {
v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum >> 11) & 3]);
sum -= delta;
v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
}
v[0] = v0;
v[1] = v1;
}
void setup() {
Serial.begin(9600);
uint32_t data[2] = {0x12345678, 0x9ABCDEF0};
uint32_t key[4] = {0xA56BABCD, 0x00000000, 0xFFFFFFFF, 0x12345678};
Serial.println("Original Data:");
Serial.print("v[0]: 0x"); Serial.println(data[0], HEX);
Serial.print("v[1]: 0x"); Serial.println(data[1], HEX);
XTEA_encrypt(data, key);
Serial.println("\nEncrypted Data:");
Serial.print("v[0]: 0x"); Serial.println(data[0], HEX);
Serial.print("v[1]: 0x"); Serial.println(data[1], HEX);
XTEA_decrypt(data, key);
Serial.println("\nDecrypted Data:");
Serial.print("v[0]: 0x"); Serial.println(data[0], HEX);
Serial.print("v[1]: 0x"); Serial.println(data[1], HEX);
}
void loop() {
// No repeated action
}