Danke Danke:  0
Gefällt mir Gefällt mir:  0
Dislikes Dislikes:  0
Ergebnis 1 bis 8 von 8

Thema: XTEA für *sehr* exotische Platform

  1. #1
    Senior Member
    Registriert seit
    13.07.08
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    210

    XTEA für *sehr* exotische Platform

    Anzeige
    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 +++

  2. #2
    Moderator Avatar von Elderan
    Registriert seit
    30.03.04
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    26

    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.

  3. #3

    Registriert seit
    16.06.08
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    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.

  4. #4
    Senior Member
    Registriert seit
    13.07.08
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    210

    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 +++

  5. #5

    Registriert seit
    16.06.08
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    0

    Standard

    Sry, ich habe das mit der sehr exotischen Platform nicht gelesen.

  6. #6
    Senior Member
    Registriert seit
    13.07.08
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    210

    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 +++

  7. #7
    Moderator Avatar von Elderan
    Registriert seit
    30.03.04
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    26

    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.

  8. #8
    Senior Member
    Registriert seit
    13.07.08
    Danke (erhalten)
    0
    Gefällt mir (erhalten)
    210

    Standard

    Anzeige
    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 +++

Ähnliche Themen

  1. exotische Schriftarten in HTML
    Von habo4ife im Forum (Web-) Design und webbasierte Sprachen
    Antworten: 5
    Letzter Beitrag: 08.11.09, 20:11
  2. Antworten: 12
    Letzter Beitrag: 30.04.09, 16:40
  3. PC sehr sehr langsam, CPU ?
    Von Obmud im Forum Die Problemzone
    Antworten: 5
    Letzter Beitrag: 20.03.06, 00:13
  4. Sehr geehrter...
    Von Joschy im Forum Fun Section
    Antworten: 6
    Letzter Beitrag: 15.02.05, 19:53
  5. DNS sehr langsam
    Von Chris im Forum Linux/UNIX
    Antworten: 5
    Letzter Beitrag: 07.09.04, 15:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •