Summary
CryptoViz's Symmetric category has classical-era (DES/3DES) and modern (AES/ChaCha20) block/stream ciphers but nothing from the ARX Feistel family used widely in embedded/lightweight contexts. XTEA (eXtended TEA, Wheeler & Needham 1997) is a compact, well-documented 64-round Feistel cipher using only add/XOR/shift — no S-boxes or lookup tables — making it a clean, low-risk addition with high pedagogical value (contrasts nicely with DES's table-heavy design).
What's missing
- No
lib/cipher/symmetric/xtea.ts
- Not in registry, worker router, or CipherName type
Proposed implementation
- 64-bit block (two 32-bit words), 128-bit key (four 32-bit words), 32 double-rounds (64 total),
DELTA = 0x9E3779B9
- Pure ARX round function:
((x<<4)^(x>>5)) + x, no fixed tables
- Decrypt runs the identical round function in reverse iteration order with
sum initialized to DELTA*32 — no separate inverse-key derivation needed (unlike DES/AES), which keeps the implementation and its instrumentation simple
- Security status:
secure (educational note: 64-bit block size is small by modern standards; superseded by ChaCha20/AES for new designs)
- Test vectors (independently verified, round-trip confirmed):
- key
000102030405060708090A0B0C0D0E0F, plaintext 4142434445464748 → ciphertext 497DF3D072612CB5
- key
00000000000000000000000000000000 (all-zero), plaintext 0000000000000000 → ciphertext DEE9D4D8F7131ED9
Acceptance criteria
Assignment
I'd like to work on this issue under ECSoC26. Will open a PR only after approval/assignment by @csxark or another maintainer.
Summary
CryptoViz's Symmetric category has classical-era (DES/3DES) and modern (AES/ChaCha20) block/stream ciphers but nothing from the ARX Feistel family used widely in embedded/lightweight contexts. XTEA (eXtended TEA, Wheeler & Needham 1997) is a compact, well-documented 64-round Feistel cipher using only add/XOR/shift — no S-boxes or lookup tables — making it a clean, low-risk addition with high pedagogical value (contrasts nicely with DES's table-heavy design).
What's missing
lib/cipher/symmetric/xtea.tsProposed implementation
DELTA = 0x9E3779B9((x<<4)^(x>>5)) + x, no fixed tablessuminitialized toDELTA*32— no separate inverse-key derivation needed (unlike DES/AES), which keeps the implementation and its instrumentation simplesecure (educational note: 64-bit block size is small by modern standards; superseded by ChaCha20/AES for new designs)000102030405060708090A0B0C0D0E0F, plaintext4142434445464748→ ciphertext497DF3D072612CB500000000000000000000000000000000(all-zero), plaintext0000000000000000→ ciphertextDEE9D4D8F7131ED9Acceptance criteria
Assignment
I'd like to work on this issue under ECSoC26. Will open a PR only after approval/assignment by @csxark or another maintainer.