Hallo Leute!
Ich suche momentan eine C Implementation des XTEA Algorithmusses, aber, und hier liegt das Problem, für eine sehr exotische Platform.
Folgende Einschränkungen:
-Keine Pointer/Zeiger
-Nur 16-Bit Integers (mit Vorzeichen) vorhanden, keine 32 oder 64 Bit Integers
-Keine Arrays
Naja vielleicht hat ja einer Zeit und Lust sich da mal ranzusetzen.
Hier mal die Referenzimplementation von hier:
Ich suche momentan eine C Implementation des XTEA Algorithmusses, aber, und hier liegt das Problem, für eine sehr exotische Platform.
Folgende Einschränkungen:
-Keine Pointer/Zeiger
-Nur 16-Bit Integers (mit Vorzeichen) vorhanden, keine 32 oder 64 Bit Integers
-Keine Arrays
Naja vielleicht hat ja einer Zeit und Lust sich da mal ranzusetzen.
Hier mal die Referenzimplementation von hier:
Code:
void encipher(const unsigned long *const v,unsigned long *const w,
const unsigned long * const k)
{
register unsigned long y=v[0],z=v[1],sum=0,delta=0x9E3779B9,n=32;
while(n-->0)
{
y += (z << 4 ^ z >> 5) + z ^ sum + k[sum&3];
sum += delta;
z += (y << 4 ^ y >> 5) + y ^ sum + k[sum>>11 & 3];
}
w[0]=y; w[1]=z;
}
void decipher(const unsigned long *const v,unsigned long *const w,
const unsigned long * const k)
{
register unsigned long y=v[0],z=v[1],sum=0xC6EF3720,
delta=0x9E3779B9,n=32;
/* sum = delta<<5, in general sum = delta * n */
while(n-->0)
{
z -= (y << 4 ^ y >> 5) + y ^ sum + k[sum>>11 & 3];
sum -= delta;
y -= (z << 4 ^ z >> 5) + z ^ sum + k[sum&3];
}
w[0]=y; w[1]=z;
}