string als MD5-Hash ausgeben...
-
Hab ein code gefunden der dateien öffnet und dann den MD5 Hash Wert der datei anzeigt:
string MD5(string file) { #define FILE_BUF_SIZE 1024 #define HT_MD5 4 int hashes = 0; char *fname = NULL; // will point to filename specified in argv FILE *f = NULL; // file access unsigned char buf[FILE_BUF_SIZE]; // file access unsigned int bytesread; // file access MD5_CTX val_md5; unsigned char md5digest[16]; MD5Init(&val_md5); hashes |= HT_MD5; fname = cvt.StringToChar(file); if ((f = fopen(fname, "rb")) != NULL) { do { // reading to buffer bytesread = fread(buf, 1, FILE_BUF_SIZE, f); // updating hash vars if (hashes & HT_MD5) MD5Update(&val_md5, buf, bytesread); } while (bytesread == FILE_BUF_SIZE); fclose(f); } else { string str = "Fehler: Auf Datei <" + file + "> kann nicht zugegriffen werden!"; return str; } MD5Final(md5digest, &val_md5); string str; if (hashes & HT_MD5) { MD5ToString((char *)md5digest, (char *)buf); //printf("MD5 = %s\n", buf); str = "MD5 = "; str += (char*)buf; return str; } return str; }...Doch ich möchte nur das ich ein normalen string in ein MD5 Hash wert umwandeln wie z.B. string s = "test" <--- diesen string als Hash wert haben, ist das möglich mit der obigen funktion.
PS. Es gibt noch die md5.h
-
MD5Update(&val_md5, "test", 4);
-
Danke für die schnelle Hilfe

Beim zweiten Parameter wird ein 'unsigned char *' erwartet, wie kann ich ein string
hier umwandeln damit es funktioniert?
-
Mit
string MeinString; MeinString.c_str();bekommst einen const char *.
wahrscheinlich nimmt er ihn nicht an drum buffer allozieren rein schreiben und dann den buffer übergeben :D.
-
reinterpret_cast<unsigned char*>("test")
-
Da haste Recht mit MeinString.c_str();
Hab es so gelöst:
char test[50]; strcpy(test, file.c_str()); if (hashes & HT_MD5) MD5Update(&val_md5, (unsigned char*)test, file.length());