ciao
sapete dirmi cosa devo includere sotto linux x avere a funzione delle funzioni che, passata una certa stringa come parametro mi ritornano l'hash MD5 ?
thnks
ciao
sapete dirmi cosa devo includere sotto linux x avere a funzione delle funzioni che, passata una certa stringa come parametro mi ritornano l'hash MD5 ?
thnks
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
up
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
dai un occhiata agli header di openssl
codice:/usr/include/openssl/md5.h `pkg-config openssl --cflags --libs` #include <openssl/md5.h>
Hybrid Share - Share is Now Easier...
http://hybrid-share.sourceforge.net/
http://directory.fsf.org/hybrid_share.html
http://gnomefiles.org/app.php/Hybrid_Share
ciao
grazie per la tua risposta, ho guardato anche la documentazione di openssl e credo di dover utilizzare questa funzione:
ho provato quindi questo codice:codice:MD2(), MD4(), and MD5() compute the MD2, MD4, and MD5 message digest of the n bytes at d and place it in md (which must have space for MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16 bytes of output). If md is NULL, the digest is placed in a static array.
ma senza ottenere risultati, o meglio, questo è l'output che ottengo:codice:#include <stdio.h> #include <openssl/md5.h> int main(){ fprintf(stderr,"prova di generazione MD5\n"); unsigned char hash[16]; unsigned char prova[]="pippo"; MD5(prova,strlen(prova),hash); hash[16]='\0'; fprintf(stderr,"hash= %s\n\n",hash); int i=0; for(i=0;i<strlen(hash);i++){ fprintf(stderr,"elemento %i carattere=%c, ascii=%i\n",i,hash[i],(int)hash[i]); } }
codice:prova di generazione MD5 hash= óªjj>ØFò¾¤ elemento 0 carattere= , ascii=12 elemento 1 carattere=, ascii=136 elemento 2 carattere=, ascii=2 elemento 3 carattere=, ascii=139 elemento 4 carattere=ó, ascii=243 elemento 5 carattere=ª, ascii=170 elemento 6 carattere=j, ascii=106 elemento 7 carattere=j, ascii=106 elemento 8 carattere=, ascii=20 elemento 9 carattere=>, ascii=62 elemento 10 carattere=Ø, ascii=216 elemento 11 carattere=F, ascii=70 elemento 12 carattere=ò, ascii=242 elemento 13 carattere=¾, ascii=190 elemento 14 carattere=, ascii=30 elemento 15 carattere=¤, ascii=164
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
Credo che l'output sia giusto...l'MD5 dovrebbe ritorna una stringa binaria...per vederla nel consueto formato devi convertire i singoli bytes in hex con qualcosa del genere:
PS: Ti conviene definire hash[MD5_DIGEST_LENGTH] invece che hash[16]...per ora MD5_DIGEST_LENGTH è 16 ma se in futuro cambia il tuo codice smette di funzionare.codice:for(i=0;i<MD5_DIGEST_LENGTH;i++) { printf("%02X", hash[i]); } printf("\r\n");
Inoltre non credo tu debba terminare l'hash con \0. Tra l'altro hash[16]=0 su un array
definito hash[16] ti sfora la memoria
![]()