Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Hash

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.12.2002, 17:28 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Bin mir nicht ganz sicher, ob das hier nicht eher in den Projektebereich gehört... bitte nicht schlagen ;-)
Gibt es in diesem Hash-Algorithmus Schwachstellen, wenn ja, könnten diese ausgenutzt werden, um auf Teile oder Eigenschaften des ursprünglichen Strings zu schließen? Sprich, ist der Algo kryptographisch sicher?


C++:
#include <stdio.h>

#define byte unsigned char

void vsh(byte* bIn, byte* bOut, unsigned long ulInputSize, int iSBoxSize)
{
   int i, r;
   byte Xt;
   int a, b;
   unsigned long t;

   // init
   for(i=0; i<iSBoxSize; i++) bOut[ i ] = (i + bIn[ i % ulInputSize]) & 255;

   // rounds...
   for(r=0; r<iSBoxSize; r++)
   {
      for(t=0, i=0; t<ulInputSize; t++)
      {
         Xt = bIn[t];
         a = bOut[ i ] + Xt + i;
         b = a + bOut[a % iSBoxSize];
         bOut[ i ] = b & 255;
         i = (b + (t & 1)) % iSBoxSize;
      }
   }
}

int main()
{
   int i;
   byte bOut[8];
   char szInput[256];

   printf("Enter a string to hash: ");
   gets(szInput);

   // hash user input
   vsh(szInput, bOut, strlen(szInput), 8);

   // output as a hex string
   for(i=0; i<8; i++) printf("%2.2x", bOut[ i ]);
   printf("\n");

   return 0;
}


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.12.2002, 12:51 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich denke, der Algorithmus ist nicht reversibel, dh du kannst mit dem hash nicht auf den Originalstring zurück schließen. Allerdings weiß ich nicht, in wie weit der Algorithmus Kryptographisch sicher ist: welche Maßstäbe willst Da anlegen? Es ist höchstens eine 64 Bit verschlüsselung, wobei typische Verschlüsselungsalgos da schon um einiges aufwendiger sind (RSA; MD5 usw)
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.12.2002, 18:45 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Naja, man könnte ja auch andere Werte als S-Box-Größe verwenden, z.B. 16, 32, 64... das gibt dann entsprechend längere Hashes. Hab die 8 nur zu Demozwecken verwendet. Mir kommt es in erster Linie darauf an, daß aus dem Hash nicht "mal eben" der ursprüngliche Wert ermittelt werden kann, und daß sich bei Änderung eines einzelnen Zeichens im Ursprungsstring nicht nur ein kleiner Teil des Hashes ändert. Theoretisch könnte man den Algo mit den vollen 256 Bytes in der S-Box laufen lassen, das wären dann 2048 Bit, sollte fürs erste reichen...
Mein Problem ist nur, daß dieser Algo im Vergleich zu MD5, SHA usw. so simpel ist. Muß doch einen Grund haben, daß die anderen Algorithmen so (relativ) komplex sind...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.02.2003, 12:21 Uhr
daniel



hmm, bei mir meckert der beim Compilieren in der Zeile rum, in der du die Funktion vsh aufrufst ;(
--
Im uebrigen bin ich der Meinung, dass M$ zerstoert werden muesste.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.02.2003, 10:18 Uhr
~0xdeadbeef
Gast


Ich glaube nicht, dass sich der Algorithmus einfach zurückrechnen lässt. Auf der anderen Seite ist er zu nichts wirklich brauchbar. Zur Verschlüsselung ist es nicht angelegt, und für einen Hash-Algorithmus kriegst du viel zu viele Kollisionen - das sollte auch die Frage beantworten, warum MD5 so kompliziert ist. MD5 ist darauf optimiert, (fast) keine Kollisionen zu erzeugen, und deswegen so gut dazu geeignet zu überprüfen, ob das, was du gekriegt hast, auch das war, was du haben wolltest.

Was RSA angeht - das ist ein ganz anderes Feld, mit publickey-Authorisation hat dein Programm beim besten Willen nichts zu tun.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.02.2003, 10:51 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

So, jetzt meld ich mich hier auch mal wieder zu Wort ;-)
Daß der Algo nicht zur Verschlüsselung gedacht ist, ist doch klar - es ist schließlich ein HASH!!! Wäre aber mal interessant, wo die Kollisionen auftreten, und wie lang die Eingabewerte dazu sein müssen. Zum Hashen von Zwei-Byte-Folgen ist die Routine natürlich nicht gedacht, da bekommt MD5 auch Probleme (OK, MD5 ist alles, nur kein gescheiter Hash)...

@RSA: Wie kommst Du denn darauf? Ich wollte nur einen simplen Hash programmieren, keine Verschlüsselung!
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.02.2003, 12:16 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich kam deshalb darauf, weil du im ersten Post von "kryptographisch sicher" geredet hast, was bei mir entsprechende Assoziationen hervorrief.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.02.2003, 19:50 Uhr
~0xdeadbeef
Gast


MD5 ist nicht alles, nur ein ziemlich guter Message Digest, und damit auch ein Hash-Algorithmus. Du wirst ihn schlecht für eine Hashtable einsetzen können - es sei denn, es geht um eine verdammt große Hashtable - aber nichtsdestoweniger ist es ein Hash-Algorithmus. Dasselbe gilt übrigens für SHA-1 (Secure Hashing Algorithm), der sogar noch ein bisschen längere Hashcodes als MD5 ausgibt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: