Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Hash di un file ??

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    30

    Hash di un file ??

    Ciao ragazzi,

    sto realizzando un programma che necessità dell'hashing di un file. Vi spiego.
    Ho dei file originali di cui devo calcolare l'hash in base alla loro dimensione e al loro contenuto (soprattutto). Mi serve per vedere se tutti utilizzano quel file origianle e non "modificato", una specie di anti-cheat .

    Esiste un algortimo per fare questo? Cioè calcolare l'hash in base al contentuo di un file ? Della serie se cambia un bit, cambia anche l'hash ? Se mi potete aiutere vi sarei molto grato. Ho visto degli algoritmi tipo Md5,SHA, SHA256. Possono andare bene per l'hashing di un file (del suo contenuto? Io credo di si ma vorrei la vostra conferma.

    In teoria basterebbe aprire il file che voglio cryptare, passarlo tutto leggendomi il suo contenuto e alla fine cryptare tutto insieme. Ma questo non funziona per file molto grandi immagino, e soprattutto per file che non sono semplicemente di testo, l'apertura di un file exe ad esempio nn causerebbe problemi ?

    Se qualcuno puoi chiarmi le idea Grazie, sarò debitore ! :mavieni:

    P.s. Il programma sarà sviluppato in VB.NET

  2. #2
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    md5 potrebbe essere stato rotto come codice di hash ma l'SHA è perfetto al momento. per quanto riguada gli exe non sò

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    30
    grazie per l'info. Sai dove posso trovare qualcosa al riguardo ? O sai per caso come si calcola l'hash di un file ? (non di una stringa di un intero file). E' tutto il giorno che cerco ma ancora niente

  4. #4
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    per farla di un file basta passare l'intera quantità dei dati attraverso l'algorimto, facendolo passare a blocchi cosi da evitare di caircarlo tutto in un colpo, meglio ancora se lo fai mappare virtualmente , cmq se vuoi del codice ho l'SHA e l'MD5 pronti all'uso,il primo in C e il secondo in C++ se li vuoi trovi la mia mail nel profilo

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    30
    Grazie Yojimbo per la disponibilità, per gli algoritmi non c'è problema gli ho già in versione C++ e VB (non .NET), però mi chiedevo come poterli applicare su un file. Apro il file e ogni riga la passo con l'MD5 .. ottengo cosi un codice hash di 128bit (output) metti che ho 100 righe, avrei 100 codici hash ... per farne uno solo univoco, che quel tipo di file ne abbia solo uno in tutto il mondo (esagero ), sommo i 100codici hash (lo scrivo anche se è una cavolata perchè sommandoli la univocita se ne emigra...)? Hai qualche idea in proposito? Forse questo nei file testo si puo fare, ma è lo stesso con i file NON di testo ? Illuminami

    Grazie ciao

  6. #6
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    ...per esempio, ti credi un buffer di 8192 byte, carichi il file nel buffer finche non è finito e inserisci il buffer nella funzine di trasformazione e solo alla fine dell'inserimento di tutti i dati. non capisco perchè parli sempre di righe..

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    30
    non saprei, credevo che l'md5 di potesse fare solo su stringhe ( da qui la lettura a righe del file), in che maniera creeresti tu il buffer ? Lo crei e poi lo passi alla funzione di md5 ?

  8. #8
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    esempio che usa l'implementazioe che ho io dell'md5 (C++)

    codice:
    #include <stdio.h>
    #include "md5.h"
    
    int main( int argc, char **argv ) {
        md5 hash;
        char buff[4096];
        unsigned char md5_hash[16];
        int ret;
        
        hash.init();
        FILE *file = fopen(argv[1],"r");
        if( file == NULL ) return -1;
    
        do {
            ret = fread(buff,4096,1,file);
            if( ret == -1 ) return -1;
            hash.add( buff, ret );
        } while( ret == 4096 );  
     
        hash.get(md5_hash);
        printf("%s -> %s\n",argv[1],md5_hash);
    
        fclose(file);
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    30
    Grazie mille mi sei stato davvero d'aiuto :metallica :mavieni: !
    Ciao

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.