Prüfsumme einer Datei / eines Strings erstellen
-
Wie lässt sich am einfachsten die MD5 / SHA-1 Prüfsumme einer Datei / eines Strings erzeugen?
-
am einfachsten ist es, wenn du ne vorhanden Bibliothek verwendest.
-
Gibt da so eine nette Seite...
http://de.wikipedia.org/wiki/Md5
http://de.wikipedia.org/wiki/SHA-1
-
Ja bitte gebt mir mal nen Link zu ner geeigneten Bibliothek.
-
-
Musst nur nen bisschen runterscrollen im Wikiartikel:
http://sourceforge.net/project/showfiles.php?group_id=42360
mfg.
-
Hier ein Beispiel um den Hashwert einer Datei zu berechnen:
#include "md5.h" // Nicht vergessen md5.c zum Projekt hinzuzufügen #include <iostream> #include <fstream> int main() { std::cout << "Dateiname: "; std::string filename; std::cin >> filename; std::ifstream file(filename.c_str(), std::ios::binary); // Datei im binären Modus öffnen if(!file) { std::cout << "Fehler beim öffnen der Datei!" << std::endl; return 1; } md5_state_t state; // Eine neue md5_state_t Variabel für diese Session erstellen // Hinweis: Nicht einmal pro Programm, sondern für jeden Hashcheck eine neue. md5_init(&state); // Variable initialisieren (Tja, das ist C) do { char buf[1024]; // Buffer fürs einlesen reservieren file.read(buf, sizeof(buf)); md5_append(&state, reinterpret_cast<md5_byte_t*>(buf), file.gcount()); // Aktuellen Buffer durchrechnen (Es ist nicht nötig die gesamte Datei zu nehmen) // Muss gecastet werden, da ifstream::read und md5_append mit char und unsigned char arbeiten } while(file); // So lange bis die Datei zuende ist md5_byte_t hash[16]; // Variable für den Hash erstellen (md5_byte_t entspricht unsigned char) md5_finish(&state, hash); // Hash dieser Session in die Variable schreiben std::cout << "MD5-Hashwert: " << std::hex; // Zur Ausgabe hex nehmen for(int i = 0; i < sizeof(hash); ++i) // Alle 16 Byte durchgehen { std::cout << ((hash[i] & 0x000000F0) >> 4) // Ersten 4 Bit << (hash[i] & 0x0000000F); // Zweiten 4 Bit des aktuellen Byte } std::cout << std::endl; // Das wars :D }
Hier ein Test ob's auch klappt:
jhasse@joomoo:~/Projekte/Muell/console1$ md5deep md5.c 700bfc75a07a64acdd2e8faea284b777 /home/jhasse/Projekte/Muell/console1/md5.c jhasse@joomoo:~/Projekte/Muell/console1$ ./console1 Dateiname: md5.c MD5-Hashwert: 700bfc75a07a64acdd2e8faea284b777 jhasse@joomoo:~/Projekte/Muell/console1$
mfg.
-
Omg, das sieht auf den ersten Blick zwar ziemlich kompliziert aus, aber vielen Dank joomoo!!