La fonction SHA1

Tout sur les langages de programmation.

La fonction SHA1

Messagepar A<3 » 27 Novembre 2012, 19:05

Bonjour à tous :)

Voilà j'essaye de créer un programme de reconnaissance de fichiers pas signatures.

Pour cela je souhaiterais avoir la signature SHA1 ou md5 d'un fichier. Mais voilà le problème:

Je n'arrive pas à trouver de fonction permettant le hash d'un fichier :?

J'ai vraiment énormément cherché et même installé la librairie openssl mais je ne voit vraiment pas comment faire :/

PS: je code en C.

J'espère avoir été assez clair et que certaines personnes vont pouvoir m'éclairer. :)


Salutations



A<3 :)
A<3 pour HaCkeur ^^
A<3
Débutant
Débutant
 
Messages: 25
Inscription: 14 Novembre 2012, 16:59

Re: La fonction SHA1

Messagepar NewbieCracker » 27 Novembre 2012, 20:40

Voilà un petit bout de code que j'ai trouver dans mon disque dur, essaye-le et dis moi des nouvelles ;).
Code: Tout sélectionner
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <openssl/md5.h>

unsigned char result[MD5_DIGEST_LENGTH];

// Print the MD5 sum as hex-digits.
void print_md5_sum(unsigned char* md) {
    int i;
    for(i=0; i <MD5_DIGEST_LENGTH; i++) {
            printf("%02x",md[i]);
    }
}

// Get the size of the file by its file descriptor
unsigned long get_size_by_fd(int fd) {
    struct stat statbuf;
    if(fstat(fd, &statbuf) < 0) exit(-1);
    return statbuf.st_size;
}

int main(int argc, char *argv[]) {
    int file_descript;
    unsigned long file_size;
    char* file_buffer;

    if(argc != 2) {
            printf("Must specify the file\n");
            exit(-1);
    }
    printf("using file:\t%s\n", argv[1]);

    file_descript = open(argv[1], O_RDONLY);
    if(file_descript < 0) exit(-1);

    file_size = get_size_by_fd(file_descript);
    printf("file size:\t%lu\n", file_size);

    file_buffer = mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0);
    MD5((unsigned char*) file_buffer, file_size, result);

    print_md5_sum(result);
    printf("  %s\n", argv[1]);

    return 0;
}
NewbieCracker
Elève
Elève
 
Messages: 43
Inscription: 23 Novembre 2012, 17:34

Re: La fonction SHA1

Messagepar A<3 » 28 Novembre 2012, 07:26

Tout d'abord merci énormément de ta réponse rapide :)

J'ai voulu tester ton code mais le problème est que je susi sous un windows et que je ne pense pas pouvoir avoir les bibliothèques de sys sous celui-ci (d'ailleur le compilo me dit qu'il ne trouve pas les fichiers).

Je vais continuer de chercher mais j'ai, grâce à ton exemple, compris comment faire pour les fichier :)

Il suffit juste de prendre les octects du fichier et de les hasher comme une chaine classique.

Merci beaucoup de ton aide :)




A<3
A<3 pour HaCkeur ^^
A<3
Débutant
Débutant
 
Messages: 25
Inscription: 14 Novembre 2012, 16:59


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités