私が呼んだXTEAの私のモフィファイドバージョンを見てくださいSimple Tea
:
#include <avr/io.h>
#include "simple_tea.h"
uint8_t secret_data[] = {0xFE, 0x67};
SimpleTEA<sizeof(secret_data) / 2> tea;
int main()
{
unsigned int rounds{16};
uint8_t key[] = {0x45, 0x74, 0x32, 0x11, 0x98, 0x94, 0xAB, 0xCF, 0x90, 0xAE, 0xBA, 0xDC, 0x06, 0x16, 0x81, 0x95};
secret_data[0] = PINB;
tea.encrypt(rounds, secret_data, key);
if (secret_data[0] & (PINB))
{
PORTC = 0x05;
}
secret_data[1] = PINB & (1 << 2);
tea.decrypt(rounds, secret_data, key);
if (secret_data[0] & (PINB))
{
PORTC = 0x50;
}
}
AVRで<250バイトのオペコードを生成します(ここでのsは、コンパイラが完全に最適化if
するのを避けるためにのみ必要です):encrypt
decrypt
➜ Encryption git:(master) ✗ avr-gcc -std=c++17 -Os -mmcu=atmega328p main.cpp -o main
➜ Encryption git:(master) ✗ avr-size main
text data bss dec hex filename
214 2 1 217 d9 main
➜ Encryption git:(master) ✗ avr-nm --size-sort -C -r --radix=d main
00000044 T main
00000022 T __do_copy_data
00000016 T __do_clear_bss
00000002 D secret_data
00000001 B tea