Dev 2010 "md5.h" fehlt
-
Hallo
Ich möchte einen String in einen md5 hash umwandeln doch mir fehlt die md5.h Library.
Kann ich die einfach einbinden oder eine andere nehmen ?
-
Wo bitte benötigst Du eine md5.h?
Wer hat die dokumentiert?Schau Dir das Beispiel an:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa382380(v=vs.85).aspx
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
durch die md5.h konnte man einfach einen String umwandeln mit md5("hash this"); jedenfalls laut Internet. Mit welchen Libs kann ich den sonst umwandeln ? das eine Beispiel (http://msdn.microsoft.com/en-us/library/windows/desktop/aa382380) ist ja unnötigst groß, und der String soll eingegeben nicht aus einer Datei eingelesen werden.
-
Teste es mal so...
#include <iostream> #include <Windows.h> #include <Wincrypt.h> #include <string> #include <iomanip> using namespace std; int main(int argc, char *argv[]) { HCRYPTPROV hCryptProv = NULL; HCRYPTHASH hHash = 0; DWORD dwHashLen; DWORD dwHashLenSize = sizeof(DWORD); BYTE *pbHash; string stringtohash = "Hier dein string"; if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) cout << "CryptAcquireContext: " << GetLastError() << endl; if(!CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash)) cout << "CryptCreateHash: " << GetLastError() << endl; if(!CryptHashData(hHash, (BYTE*)stringtohash.c_str(), sizeof(stringtohash.c_str()), 0)) cout << "CryptHashData: " << GetLastError() << endl; if(!CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE *)&dwHashLen, &dwHashLenSize, 0)) cout << "CryptGetHashParam: " << GetLastError() << endl; pbHash = new BYTE [dwHashLen]; if(!CryptGetHashParam(hHash, HP_HASHVAL, pbHash, &dwHashLen, 0)) cout << "CryptGetHashParam: " << GetLastError() << endl; cout << hex << setfill('0'); for(unsigned int i = 0; i < dwHashLen; i++) cout << setw(2) << (int)pbHash[i]; cout << endl; cin.get(); }
-
Wenn es eine Funktion der Win32 Api sein soll, dann siehe Dir das Bsp. von Martin an. Ansonsten gibt es eine Menge md5 Lib's im Netz.
Und das wichtigste zu Schluss - MD5 sollte nicht mehr verwendet werden da es als unsicher gilt, da es mit überschaubarem Aufwand möglich ist Kollision in der vollständigen MD5-Funktion zu finden!Verwende lieber eine der SHA2 Algorithmen...
Bsp.
CryptCreateHash(hCryptProv, CALG_SHA_384, 0, 0, &hHash);
-
Danke für den Hinweis das MD5 nicht sicher ist ist mir bewusst, ich habe nicht vor Daten wie Passwörter oder ähnliches zu Hashen.
Ich habe es mit CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash); probiert und die WinCrypt.h included doch ich bekomme die Meldung das hCryptProv und hHash nicht definiert sind, auch wenn ich hHash als string festlege ist noch das &-Zeichen inkomaptibel. Ich habe auch auf der msdn schon nachgeguckt, mit mäßigem erfolg. Kann mir jemand den CryptCreateHash etwas näher erklären oder wäre es doch leichter für mich eine Bibliothek einzubinden ? Und wenn ja, wie mache ich das ?
Danke für alle Antworten
-
Was ist an dem Beispiel von Domenic und dem Beispiel auf der MSDN Seite unverständlich????