Kuinka tämä onnistuu c++:lla? Tähän mennessä olen saanut luettua kansion sisältämät tiedostot ja nyt niistä pitäisi laskea md5-hash.
#include <iostream> #include <errno.h> #include <dirent.h> #include <stdio.h> #include <stdlib.h> int main() { DIR *pdir; struct dirent *pent; pdir=opendir("/home/simppe/coding/pak"); if (!pdir){ printf ("opendir() failure; terminating"); exit(1); } errno=0; while ((pent=readdir(pdir))){ //miten jatkan tästä? } if (errno){ printf ("readdir() failure; terminating"); exit(1); } closedir(pdir); }
Eli tarvitsisin siis jonkinlaisen esimerkin md5.h:n toiminnasta.
Herra on hyvä ja katsoo man-sivuja. Sieltä selviää kyllä. Jokseenkin näin pikaisen vilkaisun perusteella:
MD5_CTX Juttu; unsigned char Hash[16]; char Heksahash[33]; char *tekstia; MD5_Init(&Juttu); while (tekstia = lisaa_tekstia()) { MD5_Update(&Juttu, tekstia, strlen(tekstia)); } MD5_Final(Hash, &Juttu); for (int i = 0; i < 16; ++i) { itoa(Hash[i], Heksahash + (2 * i), 16); } printf("%s\n", Heksahash);
Tutkin man-sivuja mutta en saanut varmuutta tuon toiminnasta. Eli siis pitääkö minun käydä rivi riviltä läpi jokainen tiedosto josta haluan hashin ?
Jos haluat hashin sisällön perusteella, niin pitää. Toki voit tehdä hakemistosta hashin tiedostonimien ja tiedostojen kokojen perusteellakin, jos se riittää tarkoituksiisi. Ja helposti tiedostoa saa luettua ilmankin mitään rivejä:
#define KOKO 1024 char puskuri[KOKO]; FILE * f = fopen("tiedosto", "rb"); size_t luettu; while (1) { luettu = fread(puskuri, 1, KOKO, f); MD5_Update(&Juttu, puskuri, luettu); if (luettu < KOKO) break; } fclose(f);
Jep, tuo näyttää olevan sopiva miun tarkotukseen, menenkin testaamaan heti.
Edit: Missähän mahtaa headerit majailla tolle
Simppe kirjoitti:
Missähän mahtaa headerit majailla tolle
Lukee siellä man-sivulla: openssl/md5.h
Blaze kirjoitti:
Lukee siellä man-sivulla: openssl/md5.h
Pitäs olla asennettuna mut ei löydy.
Simppe kirjoitti:
Blaze kirjoitti:
Lukee siellä man-sivulla: openssl/md5.h
Pitäs olla asennettuna mut ei löydy.
Jos ei tuota headeria löydy niin sitten ei ihan kaikkea tarpeellista ole asennettuna tai sitten jotain on pahasti vialla.
Jos kyseessä on Debian-pohjainen distro niin onhan openssl-dev -pakettikin asennettu?
No niinpä olikin openssl on asennettu mut ei tota dev-pakettia
Aihe on jo aika vanha, joten et voi enää vastata siihen.