Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a.

XTEA für *sehr* exotische Platform

Diskussion: XTEA für *sehr* exotische Platform im Forum Cryptography & Encryption, in der Kategorie Security Area; Hallo Leute! Ich suche momentan eine C Implementation des XTEA Algorithmusses, aber, und hier liegt das Problem, für eine sehr ...

Antwort
Alt 29.09.08, 17:58   #1 (permalink)
Senior Member
 
Registriert seit: 13.07.08
enkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium III
Likes: 208
XTEA für *sehr* exotische Platform

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:

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;
}
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 29.09.08, 19:49   #2 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 24
Standard

Hallo,
das einzige Problem ist doch nur das 16 Bit Integer. Dort kann man das 32 Bit Wort einfach in zwei Blöcke zerlegen und muss dann die Operationen entsprechend anpassen.

Für Arrays kann man stattdessen auf if nutzen.


Ich würde dir empfehlen, für z.B. z << 4 eine Funktion (am besten für Precompiler) zu schreiben, im Muster.
leftRotate(z1, z2);

Code:
//Muster - Ungetestet
leftRotate(int x1, int x2, int shift) {
   x1 =  (x1 << 4) | (x2 & (0xF000));
   x2 = x2 << 4;
}
Für rightRotate dann ähnlich.
Elderan ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 29.09.08, 21:30   #3 (permalink)
jmc
 
Registriert seit: 16.06.08
jmc Leistung: Facit NTK
Likes: 0
Standard

Im Windows gibt es übrigens auch die sehr schnelle Möglichkeit mit Assembler (ror oder rol) um z.B. einen Integer rotieren zu lassen.
jmc ist offline   Mit Zitat antworten
Alt 29.09.08, 21:35   #4 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 13.07.08
enkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium III
Likes: 208
Standard

Naja Thank God - BASIC++ kennt UDTs
Das macht die Sache um einiges Einfacher

Elderan, genau sowas habe ich gesucht! Jetzt brauch ich nur noch Shr, Xor und Addition - Ich habs leider nicht so mit Mathe und binären Zahlen. Brauche aber einen brauchbaren (was für eine Wortwahl!) Verschlüsselungsalgorithmus für eine Hardwareplattform...

Okay sum und delta sind ja kein Problem; habe einfach folgenden Typen für 32 Bit Ints konstruiert:
Code:
type DWord
     low as word
     high as word
end type
und sum+delta so zugewiesen:
Code:
xtea_sum.low=C6EFh
         xtea_sum.high=3720h
         xtea_delta.low=9E37h
         xtea_delta.high=79B9h
Okay
Aber bei den Shl, Shr, Xor, und Additionsfunktionen gibts bei mir jetzt eben noch Verständnissprobleme... plz Help - verstehe auch deine angehängte Funktion nicht so ganz...
Warum soll den x1 gleich x1 Shl 4 Or x2 And F000h sein!? - Verstehe ich nicht

@jmc:
Sry aber - "XTEA für *sehr* exotische Platform"
Klar es gibt Architekturen die sogar Rol/Ror nativ unterstüzten (AMD64 und IA64 meines Wissens nach) - aber ein Microcontroller (Motorola MH64C oder so ähnlich) mit knappen 240 Bytes RAM - Wohl eher weniger...
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 29.09.08, 21:53   #5 (permalink)
jmc
 
Registriert seit: 16.06.08
jmc Leistung: Facit NTK
Likes: 0
Standard

Sry, ich habe das mit der sehr exotischen Platform nicht gelesen.
jmc ist offline   Mit Zitat antworten
Alt 30.09.08, 17:12   #6 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 13.07.08
enkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium III
Likes: 208
Standard

Hat sich erledigt.
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 30.09.08, 19:39   #7 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 24
Standard

Hallo,
wäre schön, zu erfahren, warum es sich erledigt hat. Hast du es portiert (wenn ja, wäre nett wenn du es posts).

Ansonsten:
XOR sollte nicht das Problem sein.

aus
a = b ^ c;

wird
a1 = b1^c1;
a2 = b2^c2;

Bei Addition bin ich gerade noch am Grübeln, wie man den Übertrag hinbekommt.


Und rightshift ist ähnlich wie left shift, muss sich nur mal angucken wie sich das so verhält.
Elderan ist offline   Mit Zitat antworten
Alt 30.09.08, 20:01   #8 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 13.07.08
enkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium IIIenkore Leistung: Pentium III
Likes: 208
Standard

Es hat insofern erledigt, als dass ich es nicht mehr brauche, da ich in einem anderen Forum einen "Binärgott" gefunden habe
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Cryptography & Encryption » XTEA für *sehr* exotische Platform
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
exotische Schriftarten in HTML habo4ife (Web-) Design und webbasierte Sprachen 5 08.11.09 19:11
Kubuntu 9.04: Kein acer-wmi-Verzeichnis in /sys/devices/platform lynx Linux/UNIX 12 30.04.09 15:40
PC sehr sehr langsam, CPU ? Obmud Die Problemzone 5 19.03.06 23:13
Sehr geehrter... Joschy Fun Section 6 15.02.05 18:53
DNS sehr langsam Chris Linux/UNIX 5 07.09.04 14:03


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62