[C++] Ansi 2 MD5 - Wie?

Nachfrager

Grünschnabel
Hallo,

ich habe folgende Frage: wie ist es möglich, einen normalen AnsiString in einen MD5-Hash umzuwandeln Habe schon manche Beispiele gefunden, habe aber immer Fehler bekommen, die mir sagen, dass irgendeine Funktion in der UNIT1.OBJ nicht deklariert oder so ist..

Grüße
Jannis
 
Hy,

vor 'nem ähnlichen Problem stand ich auch mal.

Ich hab mir dann nur ne passende MD5 Klasse runtergeladen und die md5class.h includiert. Dann hab ich mir ne Funktion geschrieben die folgendermaßen aussah:
Code:
String getMD5(String s)
{
   CMD5 md5;

   md5.setPlainText((char*)s.c_str());

   return md5.getMD5Digest();
}
Im Anhang befindet sich die Klasse, die ich benutzt habe.

Damit generiere ich mir meine MD5 Hashs...

mfg
 

Anhänge

  • MD5.ZIP
    14,6 KB · Aufrufe: 316
Hallo,

danke erstmal für die Klasse. Trotz dem hab ich noch einen Fehler bekommen:

Borland C++ Builder Fehlerausgabe hat gesagt.:
[C++ Fehler] md5-aufruf.cpp(5): E2141 Fehler in der Deklarationssyntax

[Edit] oder soll ich doch lieber ein php script hochladen und es dann mit 'ner IdHTTP auslesen? xD [/Edit]
 
Zuletzt bearbeitet:
Na, wenn das da steht, dann gibt's offensichtlich nen Fehler in deiner Deklaration...

Vielleicht postest du einfach mal ein Stück Code?
 
Hallo,

hier die Unit1.cpp:

C++:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "md5class.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

String getMD5(String s)
{
   CMD5 md5;

   md5.setPlainText((char*)s.c_str());

   return md5.getMD5Digest();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage (getMD5 ("www.tutorials.de"));
}
//---------------------------------------------------------------------------

Grüße
Jannis
 
Ich hab das Programm jetzt mal so übernommen und ich bekam nen Linker-Fehler...

Dann hab ich die "md5c.cpp" und die "md5class.cpp" dem Projekt, als Dateien, hinzugefügt, und dann ging's...
 
Tut mir leid, dass ich jetzt den Thread hochgeholt habe, aber bekomme immernoch Fehler.
Bin alles genau so durchgegangen, habe zuerst auch die Linker Fehler bekommen, doch nun
bekomm ich Fehler wie z.b. :

Code:
[C++ Fehler] md5c.cpp(102): E2451 Undefiniertes Symbol 'context'
[C++ Fehler] md5c.cpp(104): E2040 Deklaration nicht ordnungsgemäß abgeschlossen
[C++ Fehler] md5c.cpp(287): E2238 Bezeichner 'input' mehrfach deklariert
[C++ Fehler] md5c.cpp(120): E2344 'input' bereits deklariert

und das alles auch öfters. Nun meine Frage :
Wie bekomm ich die Errors weg ?

PS: code ist der selbe wie von Jannis der oben schon gepostet wurde
 
Wie bekomm ich die Errors weg ?

PS: code ist der selbe wie von Jannis der oben schon gepostet wurde

Naja nur das das bei Ihm der Code nur bis zeile 33 geht und bei dir scheinbar bis mind. 287.

Eigentlich sagen die Fehlermeldungen schon alles aus. Klick doppelt auf die jeweilige Fehlermeldung dann müsstest du an die Stelle kommen bei der der Fehler ist.

Code:
 [C++ Fehler] md5c.cpp(102): E2451 Undefiniertes Symbol 'context'

Dieser Fehler kommt vor wenn man sich vertippt hat bzw. wenn man eine Variable etc. benutzt die man nicht deklariert hat.

Code:
 [C++ Fehler] md5c.cpp(287): E2238 Bezeichner 'input' mehrfach deklariert
[C++ Fehler] md5c.cpp(120): E2344 'input' bereits deklariert

Hier steht das du "input" mehrfach deklariert hast. klick doppelt um an die Fehlerstelle zu kommen.

Wenn du auf die Fehlermeldung klickst und dann F1 drückst dann müsste die Hilfe sich öffnen und da stehen dann in der Regel die Fehlerbeschreibung und die Möglichkeit zur Fehlerbehebung drin.

Gruß
Rudolf Grauberger
 
Zurück