Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Md5-signatur für Dateien berechnen

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, 00:00 Uhr
Luke1410



Hi,

nachdem ich vor einigen Jahren die Grundlagen von C doch schonmal verstanden hatte, wollte ich ein kleines Programm schreiben, dass fehlerhaft übertragene Dateien erkennt.
Dazu soll das Programm von einer Datei beim Anwender die MD5-Signatur errechnen und diese mit der Referenz-Signatur vergleichen.

Mein Problem ist jetzt: Ich habe keine Lösung gefunden, die mit dem Visual C++-Compiler von M$ zusammen funktioniert und sich auf C beschränkt (d.h. es gibt Haufenweise C++-Lösungen oder C-Lösungen, die wohl auch unter Linux funktionieren).

Die momentan vielversprechenste Lösung habe ich in 2 Dateien gefunden:
www.luke1410.de/md5.h
www.luke1410.de/md5.c

Allerdings schaffe ich es nicht die dort definierten Funktionen in mein Programm einzubinden:
www.luke1410.de/daoc-doc.c

Hoffe, es kann mir hier jemand weiterhelfen. Sonst wirds wohl noch Wochen dauern, bis ich das alles in Büchern nachgelesen habe.

Dieser Post wurde am 02.12.2002 um 00:01 Uhr von Luke1410 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.12.2002, 09:58 Uhr
virtual
Sexiest Bit alive
(Operator)


Die md5.h und md5.c scheinen der Referenzimplementierung zu entsprechen, die im entsprechenden RFC zu finden ist (RFC 1321, wenn ich mich recht entsinne). Ich habe diese Problemlos mit dem VC 6 und gcc compilieren und verwenden können.
Was bei dir jedenfalls schief ist, ist in daoc_doc.c das Include von md5.c; du mußt md5.h Includieren
--
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
02.12.2002, 13:53 Uhr
~Luke1410
Gast


Oops. Das ist noch ein Überbleibsel aus dem alten Testcode. Das include sollte dort eigentlich gar nicht mehr stehen.

Will heißen: Ich komme auch nicht weiter, wenn ich sowohl md5.h als auch md5.c einbinde.

Allerdings ist mir über die Nacht noch eine Idee gekommen und werde das nachher nochmal ausprobieren.

Trotzdem bin ich für jeden der mir sagen kann, wie ich die 3 Funktionen einbinden kann um aus einem beliebig großen String die MD5-Signatur zu errechnen, unheimlich dankbar. :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.12.2002, 14:16 Uhr
virtual
Sexiest Bit alive
(Operator)


1. Was geht denn genau schief?
2. Du darfst md5.c nicht mit einbinden, jedenfalls nicht mit include, sondern nur die generierte obj Datei.
--
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
004
02.12.2002, 18:07 Uhr
Luke1410



Ah, das erklärt dann wohl, warum ich gelegentlich Fehler beim Linken erhalten habe. Könntest du mir (kurz) noch erklären, warum man die md5.c nicht einbinden darf? Sind doch nur 3 Funktionen die deklariert werden. Das sollte doch eigentlich keine Probleme machen.

Nun, ich weiss nicht, wie ich die 3 Funktionen verwenden soll.
Das ganze geht schon bei der Deklaration einer Variablen für MD5Init los.
Laut MD5.h ist diese so definiert:

Code:
struct MD5Context {
        uint32 buf[4];
        uint32 bits[2];
        unsigned char in[64];
};


Wenn ich aber mit

Code:
MD5Context MD5test;


diese deklarieren will, kommt schon der erste Fehler.

Somit klappt auch der Aufruf der Funktion MD5Init nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.12.2002, 21:05 Uhr
Luke1410



Bin leider immer noch nicht weiter.
Allerdings habe ich jetzt einen neuen Ansatz gewählt und bin auf eine andere Header-Datei umgestiegen.

auf www.luke1410.de/md5.h
www.luke1410.de/md5.c
sind die beiden Dateien, die ich jetzt nutze und
www.luke1410.de/main.c der erste Versuch.
Ausgeben soll er die MD5-Signatur des Strings: "Test".
Ausgeben tut er allerdings irgendeine sinnlose Kombination von Zeichen. :-)

Leider habe ich zu den Funktionen keine Doku außer der mangelnden Kommentare im Quellcode finden können. Kann mir jemand weiterhelfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.12.2002, 21:30 Uhr
~0xdeadbeef
Gast


Warum benutzt du nicht einfach md5sum? Ist bei jeder Linux-Distri dabei, für die Windows-version frag google.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.12.2002, 21:47 Uhr
Luke1410



Die Funktionen möchte ich in einem Windowsprogramm nutzen und bei dem benutzen Compiler konnte ich keine fertige Funktion finden.

Allerdings habe ich wohl den Fehler gefunden. Die Werte werden hexadezimal in Digi gespeichert. :-)

Jetzt bräuchte ich nur noch jemanden, der mir bestätigt, dass die MD5-Signatur von "Test" (16 36 09 AD 6E F3 6D 0A 2A D9 50 20 66 30 19) ist und die Welt ist gerettet. :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.12.2002, 22:06 Uhr
virtual
Sexiest Bit alive
(Operator)


Also wenn Du die vier Bytes meinst 'T', 'e', 's', 't', dann ist

C++:
0c bc 66 11 f5 54 0b d0 80 9a 38 8d c9 5a 61 5b


der Digest. Die Welt muß also noch gerettet werden... Überhaupt meine ich mich zu entsinne, daß MD5 eine 128 Bit verschlüsselung ist, Dein Digest hat nur 120 Bit.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 04.12.2002 um 22:07 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.12.2002, 20:36 Uhr
Luke1410



Nochmals tausend Dank, Virtual. :-)
Hab den Fehler dank deiner Hilfe finden können.
Man möge mich lynchen... Wer kommt schon auf die Idee die Länge eines Strings mit sizeof zu berechnen. ;-)

Auf jeden Fall klappts jetzt wunderbar.
Wenn Interesse besteht, poste ich die Funktion mal etwas besser dokumentiert hier.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: