Encontré la fuente de TEA de dominio público de wikipedia ( enlace ), se ve así:
uint32_t v0=v[0], v1=v[1], sum=0, i; /* set up */
uint32_t delta=0x9e3779b9; /* a key schedule constant */
uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */
for (i = 0; i < 32; i++) { /* basic cycle start */
sum += delta;
v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);
v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);
} /* end cycle */
v[0] = v0;
v[1] = v1;
}
Funciona bien, pero estoy tratando de entender criptografía un poco más, así que estoy retocando y explorando. Pensé que cambiar el número de rondas (32 en el ejemplo) funcionaría bien siempre y cuando la función de descifrado cambiara para usar el mismo número. Sin embargo, lo subí a 50 en cada lado y ahora mi salida no coincide con el texto sin formato inicial. Pensando que puede ser demasiado alto, intenté 20; no dados. Luego pensé que lo intenté muy de cerca, lo puse en 31, luego en 33, y ninguno funcionó.
¿Se requiere que la cantidad de rondas en TEA sea 32 por alguna razón? No puedo ver por qué, pero estoy lejos de ser un experto.