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.