Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C]: Hash MD5

  1. #1

    [c] md5

    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

  2. #2
    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

  3. #3
    dai un occhiata agli header di openssl

    codice:
    /usr/include/openssl/md5.h
    
    `pkg-config openssl --cflags --libs`
    
    #include <openssl/md5.h>

  4. #4
    ciao

    grazie per la tua risposta, ho guardato anche la documentazione di openssl e credo di dover utilizzare questa funzione:

    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.
    ho provato quindi questo codice:

    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]);
      }
    }
    ma senza ottenere risultati, o meglio, questo è l'output che ottengo:

    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

  5. #5
    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:
    codice:
    for(i=0;i<MD5_DIGEST_LENGTH;i++)
    {
        printf("%02X", hash[i]);
    }
    printf("\r\n");
    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.
    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


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.