md5 hash einer Datei berechnen

Gamer123

Mitglied
wie der Titel schon sagt möchte ich gern den md5 Hash einer Datei berechnen.
Hab im Internet leider nichts gefunden außer Programme die das für mich schon machen. wills aber selber in ein eigenes Programm einbauen

ab leibsten währe mir

char hash[33];
hash=mache_md5_hash(Pfad zur Datei):rolleyes:

glaube zwar nicht das es sowas gibt, aber hoffe es gibt ne lösung die nicht sehr kompliziert ist

ich programiere mit Dev-C++
unter Windows
Vielen Dank schon mal im Vorraus
 
Hi.

Schau dir mal boost::md5 an.

Die Datei mußt du nur mit einem ifstream im binary Modus öffnen und an den Konstruktor übergeben. Auf der Seite ist ein Beispiel.

Die boost Bibliothek solltest du einfach über den Update Manager von Dev-C++ installieren können.

Gruß
 
ich weis das thema is schon etwas älter, aber ich bekomme es einfach nicht hin.

ich versteh nich genau was ich machen muss.

ich hab die boost gedownloadet
und in meinen Code das beispiel eingesetzt:
Code:
#include <iostream>
#include <fstream>
#include <boost/md5.hpp>

int main(int argc, char *argv[])
{
   std::cout << boost::md5("message").hex_str_value();

   boost::md5(std::ifstream("file.txt")).hex_str_value();
}

leider bekomme ich den fehler das die klasse boost::md5 keinen member hex_str_value_type besitzt:

9 C:\Dev-Cpp\Projekte\md5_2\main.cpp 'class boost::md5' has no member named 'hex_str_value_type'

hab ich etwas vergessen, bitte um hilfe
 
Hi.
Code:
#include <iostream>
#include <fstream>
#include <boost/md5.hpp>

int main(int argc, char *argv[])
{
   std::cout << boost::md5("message").hex_str_value();

   boost::md5(std::ifstream("file.txt")).hex_str_value();
}

leider bekomme ich den fehler das die klasse boost::md5 keinen member hex_str_value_type besitzt:
Scheint als wäre das Beispiel auf der Seite etwas veraltet...

Probier's mal so
C++:
std::cout << boost::md5("message").digest().hex_str_value();
Gruß
 
danke erstmal, der eine Fehler ist schonmal weg, jetzt kommen neue:

11 C:\Dev-Cpp\Projekte\md5_2\main.cpp invalid conversion from `void*' to `const char*'
11 C:\Dev-Cpp\Projekte\md5_2\main.cpp initializing argument 1 of `boost::md5::md5(const char*)'
11 C:\Dev-Cpp\Projekte\md5_2\main.cpp 'class boost::md5' has no member named 'hex_str_value'

wobei auf den zweiten befehl hingewiesen wird.

wenn ich .digest(). mit reinschreibe kommen die Fehler:

11 C:\Dev-Cpp\Projekte\md5_2\main.cpp invalid conversion from `void*' to `const char*'
11 C:\Dev-Cpp\Projekte\md5_2\main.cpp 'class boost::md5' has no member named 'hex_str_value'
 
main code sieht jetzt so aus:

Code:
#include <iostream>
#include <fstream>
#include <boost/md5.hpp>

int main(int argc, char *argv[])
{
   std::cout << boost::md5("message").digest().hex_str_value();

   boost::md5(std::ifstream("file.txt")).hex_str_value();
}
wobei die Fehler auf dem 2. befehl angezeigt werden
 
main code sieht jetzt so aus:

Code:
#include <iostream>
#include <fstream>
#include <boost/md5.hpp>

int main(int argc, char *argv[])
{
   std::cout << boost::md5("message").digest().hex_str_value();

   boost::md5(std::ifstream("file.txt")).hex_str_value();
}
wobei die Fehler auf dem 2. befehl angezeigt werden
Beim 2. Befehl mußt du natürlich auch .digest() einfügen. Ich dachte das wäre klar...

Dann kann an den Konstruktor nur eine nicht-konstante Referenz auf einen istream übergeben werden, was dazu führt, dass man keine temporären Objekte übergeben kann.

C++:
ifstream input("test.txt");

cout << boost::md5(input).digest().hex_str_value() << endl;
Gruß
 
wobei auf den zweiten befehl hingewiesen wird.

wenn ich .digest(). mit reinschreibe kommen die Fehler:

Zitat:
11 C:\Dev-Cpp\Projekte\md5_2\main.cpp invalid conversion from `void*' to `const char*'
11 C:\Dev-Cpp\Projekte\md5_2\main.cpp 'class boost::md5' has no member named 'hex_str_value'

soweit konnte ich es mir auch denken

--Edit--
hab mein fehler entdeckt:
im Beispiel stand

boost::md5(std::ifstream("file.txt")).hex_str_value();

und es musste heisen

std::cout<<boost::md5(std::ifstream("file.txt")).hex_str_value();

ich hab jetzt das problem das es sehr viele Linker Errors gibt
z.B.
[Linker error] undefined reference to `boost::md5::md5(char const*)'

was nu?
 
Zuletzt bearbeitet:
Zurück