# md5 Summe eines Strings ermitteln.



## Crazy_down (27. August 2007)

Hi, ich hoffe der Thread wird nicht gleich geclosed ;-)
Ich bin mir durchaus bewusst dass das Thema schon im Forum behandelt wurde z.b.
http://www.tutorials.de/forum/c-c/192673-md5-verschluesselung-2.html <-- hier.
Nur konnte ich mit " Ich verstehe nicht wie das geht" nicht wirklich was Anfangen, allerdings mit dem Post http://www.tutorials.de/forum/1056126-post23.html schon
und dazu habe ich einige Fragen.

Wenn ich den Code so Übernehmen wie in dem Post, wird die .exe bei mir mit einem Fehler geschlossen. 
Änder ich jedoch die Zeile 
	
	
	



```
unsigned char hashwert1[16];
```
in 
	
	
	



```
unsigned char hashwert1[17];
```
 funktioniert es. D.h. doch es greift über den zugewiesenen Speicherbereich hinaus oder ?

2. Wenn ich mir die md5 Summe dann ausgeben lasse, kommt sowas: "\7*2?«tèL????Q¿)" wenn ich es allerdings mit einer anderen Sprache ermittel, kommt das bei raus: "5c372a32c9ae748a4c040ebadc51a829" ich denke mal das 2. ich Korrekter.
Warum ist das so ? Muss ich das noch Irgendwie konvertieren ?

danke schonmal
grüße
crazy_down

P.S. Sollte der Post doch gegen die Regeln Verstoßen oder Irgend jemand nerven, bitte ich Ihn zu Löschen oder zu Schließen.


----------



## Crazy_down (28. August 2007)

O.k. habe gestern Abend beim Suchen noch was gefunden.
Hier die Lösung.

MD5 Source Code:
http://xyssl.org/code/source/md5/

MD5 Hello World:
http://xyssl.org/code/examples/hash/hello/

grüße
crazy_down


----------



## Crazy_down (29. August 2007)

Muss jetzt nochmal Fragen 

Ich möchte aus dem Oben genannten Quellen jetzt nicht nur die MD5 Summe eines Strings sondern einer Datei bzw. deren Inhalt ermitteln.

Aber irgendwie habe ich das ein paar Probleme, da ich den Inhalt Zeichenweise einlese.
Hier mal ein bischen code.

```
int i,zaehler=0;
    ifstream out("cookies_del.bat");                     // Datei zum Lesen Öffnen
     cout << " Inhalt der Datei:\n";
     char inhalt;
     unsigned char *p = reinterpret_cast <unsigned char*> (&inhalt);
     while(out.get(inhalt))
     {
            //cout << inhalt;
            //cout << *p;
           
            unsigned char diggi[zaehler];   
     md5(p,zaehler,diggi);
   
            printf( "%02x", digest[zaehler] );
        
            zaehler++;
            
     }
       cout << "\n*** Ende der Datei erreicht**\n";
       cout << "Anzahl Zeichen:" << zaehler <<"\n";       
     out.close();
     cout << inhalt;
```

Die Ausgabe ist dann irgendwie nicht Korrekt 
Also er gibt es zu Oft aus und zwar glaube ich sooft wie er Zeilenumbrche findet.
Außerdem macht er es für jedes zeichen und nicht für den Inhalt gesamt.
Ich hoffe ihr könnt mir da Helfen.

danke schonmal


----------

