Stoppt die Vorratsdatenspeicherung! Jetzt klicken && handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
 
Blowfish
von Plapperkatze am 24.Februar 2006 um 15:28
zurück zur Kategorie "Tutorials"

Blowfish ist ein nicht patentierter Verschlüsselungsalgorithmus. Wer nie davon gehört hat, sollte evtl erstmal einen Blick in die Wiki werfen:
http://de.wikipedia.org/wiki/Blowfish

Hier ist das Paper von Bruce Schneier, dem Erfinder von Blowfish:
http://www.schneier.com/paper-blowfish-fse.html

Nun, ich habe den Algorithmus nicht neu geschrieben, sondern den C Code (GNU Lesser General Public License) komplett übernommen von Paul Kocher, und nur eine hübsche Fensterumgebung dazugebastelt.

Hier ein Screenshot meines Proggies:


Nun werden bei Blowfish jeweils 8 Bytes (2x 32Bit) verschlüsselt. Wenn man nun zB. nur Bytes verschlüsselt (also ASCII chars, Buchstaben), kann man diese in verschiedener Reihenfolge übergeben, und erhält völlig verschiedene Ergebnisse. Ich lese den zu chiffrierenden Text von links nach rechts, und schiebe ein Byte (unsigned) nach dem anderen in 2 unsigned longs. Diese haben 32 Bit, also wird aus 4 Bytes wird ein long-Wert.
Bsp:
A (65) B (66) C (67) D (68)
wird 0x41424344 (hexadezimal, 0x41 = dezimal unser A (65)
Das machen wir 2 mal, um 8 Bytes zu bekommen, dann wird dieser Abschnitt gecryptet. Danach das gecryptete Ergebnis wieder in Bytes wandeln (Reihenfolge wichtig), und die nächsten 8 Bytes lesen und verschlüsseln.

Im Quelltext sieht das so aus:
       Blowfish_Init (&ctx,(unsigned char*)key,keylaenge);

       for(n=0;n<textlaenge;n+=8)
       {
         L=c[n];L<<=8;
         L+=c[n+1];L<<=8;
         L+=c[n+2];L<<=8;
         L+=c[n+3];
         R=c[n+4];R<<=8;
         R+=c[n+5];R<<=8;
         R+=c[n+6];R<<=8;
         R+=c[n+7];

         Blowfish_Encrypt(&ctx, &L, &R);

         r[n+3]=L&0xFF;L>>=8;
         r[n+2]=L&0xFF;L>>=8;
         r[n+1]=L&0xFF;L>>=8;
         r[n]=L&0xFF;
         r[n+7]=R&0xFF;R>>=8;
         r[n+6]=R&0xFF;R>>=8;
         r[n+5]=R&0xFF;R>>=8;
         r[n+4]=R&0xFF;

       }

Decrypten funktioniert genauso, nur mit dem Aufruf Blowfish_Decrypt(&ctx, &L, &R);

Der Quellcode (.rar, 38kB, exe und source) ist hier:
http://katze.dead-men.de/upload/29_blowfish.rar

gruesse, die plapperkatze

zurück zur Kategorie "Tutorials"
[0 Kommentare]

Name


Kommentar




Bitte abtippen


 
(C) 2006-20012 Plapperkatze - 220706 Besucher seit dem 23.01.2012 Login