Python Hashlib MD5

Python Hashlib MD5
Le funzioni di hash sono metodi/funzioni che possono accettare dati di dimensioni diverse come hash o digest di input e output che è un dati cifrato di una dimensione definita. L'integrità dei dati può essere valutata utilizzando questo valore. Una funzione hash crittografica include l'hash MD5. Un valore di hash viene aggiunto a ciascun pacchetto di dati prima che venga inviato o trasmesso su Internet. Il server calcola l'hash quando i dati vengono ricevuti e verifica/verifica il valore di hash collegato/allegato. I pacchetti di dati sono accettati solo se il valore hash trasmesso e il valore hash allegato sono gli stessi. Altrimenti, indica che i dati sono cambiati. Questa modifica può essere derivata da perdita di dati, manomissione dei dati, errori di rumore o da una terza parte. In questo tutorial, insegneremo l'uso e il funzionamento di MD5 Hash in Python.

Cos'è Hash MD5 in Python?

Uno dei metodi hash forniti dal modulo hashlib di Python è MD5 Hash. Per eseguire i calcoli hash, è principalmente utilizzato nelle funzioni crittografiche. L'hash può anche essere utilizzato per creare cache di set di dati enormi, verificare le password, verificare le impronte digitali, controllare l'integrità dei file, ecc. Prende una stringa di byte come input e supera una stringa esadecimale come valore codificato. Un valore di hash a 128 bit viene prodotto quando si codifica i dati della stringa su un hash MD5. Dovresti stare attento quando si sceglie la codifica dei caratteri per convertire i dati di testo in binario prima di hash perché gli algoritmi di hash spesso funzionano con i dati binari piuttosto che con i dati testuali. L'hash provoca anche dati binari.

Le funzioni associate all'hash MD5 sono:

codificare(): Crea byte dalla stringa in modo che la funzione hash possa usarli.

digerire(): Restituisce i dati codificati o crittografati sotto forma di byte.

hexdigest (): Il formato esadecimale dei dati codificati viene restituito usando questa funzione.

Vantaggi di MD5

  • Gli hash più piccoli possono essere confrontati e conservati più facilmente usando MD5 rispetto ai testi più grandi di variazioni variabili.
  • Le password vengono salvate/memorizzate nel formato a 128 bit utilizzando l'algoritmo MD5.
  • Ogni pacchetto di dati aggiunge un valore di hash prima della trasmissione dei dati. Puoi cercare la corruzione del file una volta ricevuti i dati dal server. La verifica dell'integrità del file è valida fintanto che gli hash corrispondono per evitare una corruzione dei dati.
  • Usando MD5, un digest di messaggio può essere semplicemente generato da un messaggio originale.

Come usare Hash MD5 in Python?

Come ottenere md5 di oggetti e file stringa sono dimostrati nella sezione seguente.

Calcolo del valore di hash MD5 di una stringa

Il calcolo del valore hash di un oggetto stringa in Python comporta generalmente quattro passaggi:

  1. Creazione o caricamento di un valore di stringa.
  2. Convertire la stringa in byte.
  3. Crittografia dei dati in byte nel valore di hash MD5.
  4. Visualizza o restituisce i dati sotto forma di byte (usando digest ()) o sotto forma di esadecimale (usando hexdigest ()).

La variabile stringa "stringa" è definita con codifica binaria nello script precedente. L'hashlib.Il metodo MD5 "può quindi essere utilizzato per crittografare direttamente la stringa. L'uscita codificata viene visualizzata utilizzando la funzione digest. Una stringa binaria potrebbe non essere sempre disponibile come input. In tali scenari, devi prima convertire i dati in una sequenza binaria prima di passarli all'algoritmo Hash MD5.

Ora esaminiamo alcuni esempi per calcolare l'hash MD5 di un oggetto stringa.

Esempio 1: stampare i dati della stringa in byte equivalenti all'hash MD5

Per utilizzare la funzione MD5, dobbiamo prima importare il modulo hashlib. Passiamo un dati di stringa all'interno della funzione MD5. Quindi, stampiamo sotto forma di valore di hash MD5 e sotto forma di byte.

La funzione hash può accettare i byte come input. Pertanto, passiamo le stringhe come byte alla funzione md5 () nel codice precedente. Il metodo Hash MD5 crittografa quindi i dati forniti. Infine, utilizziamo la funzione digest () per generare l'equivalente di byte della stringa codificata da hash MD5.

Esempio 2: stampare i dati della stringa in esadecimale equivalente all'hash MD5

Ora, stampiamo i dati in esadecimale dopo averli codificati in MD5 Hash. Nell'esempio precedente, utilizziamo "b" appena prima del valore della stringa per codificare la stringa in byte. Qui, applichiamo la funzione encode () sulla stringa per codificarla. Entrambi gli approcci producono risultati identici. Tuttavia, possiamo specificare il formato di codifica di nostra scelta con l'aiuto della funzione code ().

Qui, utilizziamo la funzione code () per trasformare i dati della stringa specificati in un byte in modo che possano essere passati a una funzione hash che lo accetterebbe. Quindi, è codificato con la funzione MD5. Infine, il suo valore esadecimale viene restituito utilizzando il metodo hexidest ().

Calcolo del valore hash MD5 di un file

L'hashlib del modulo integrato di Python può anche essere utilizzato per creare l'hash MD5 di un file

Esempio 1: il valore hash MD5 di un piccolo file in Python

Dovresti essere consapevole che semplicemente specificando un nome file all'interno dell'hashlib.La funzione md5 (), come nel seguente esempio, non restituisce il valore hash del file.

Il valore restituito non è l'hash MD5 del nostro file. Ma è il valore di hash MD5 del "Python.txt ”String.

Per ottenere il valore hash MD5 corretto del file, è necessario prima leggere il file in byte. È facile, tutto ciò che dobbiamo fare è leggere il contenuto del file e convertirlo in byte. Il byte viene quindi passato a hashlib.md5 () per ottenere il valore di hash md5.

Come si può vedere, la funzione calcola il valore di hash MD5 del file correttamente.

Esempio 2: il valore hash MD5 di un file di grandi dimensioni in Python

Se il file ha una dimensione di 10 GB, diciamo che è un file di registro di grandi dimensioni, un dump del traffico, un videogioco, ecc., Probabilmente userebbe tutta la tua memoria se provi a creare un hash MD5. In tal caso, possiamo leggere i file di grandi dimensioni in blocchi di byte, che è un modo efficiente in termini di memoria di calcolo MD5 Hashes. La dimensione dei blocchi dipende dalle tue esigenze, dalle dimensioni del file, dalla memoria del sistema, ecc. Pertanto, in questa procedura, elaboriamo sequenzialmente i blocchi aggiornando allo stesso tempo l'hash. Di conseguenza, l'hash MD5 viene aggiornato 100 volte durante questo processo, se ci sono 100 di questi blocchi di file.

Leggiamo i dati in blocchi utilizzando l'aiuto di un ciclo while mentre il valore di hash MD5 viene aggiornato utilizzando la funzione Update ().

Confronta e convalida Hash MD5 di un file

Sul server o utilizzando una logica nel codice, dovremmo convalidare l'hash MD5 dei dati o del file. Creiamo di nuovo l'hash MD5 del file originale per verificare l'hash. Successivamente, confronta i valori MD5 generati dalla fonte e da noi.

Come entrambi i valori, il valore di Source_md5 e il valore hash MD5 del nostro file abbinati. Ciò significa che il valore di hash MD5 è verificato.

Conclusione

Abbiamo imparato per la prima volta le funzioni di hash in questo tutorial. Abbiamo spiegato cosa hashlib.La funzione md5 () è e quali funzioni sono associate ad essa. Abbiamo discusso di alcuni vantaggi e applicazioni delle funzioni di hash MD5. Abbiamo imparato a usare l'hashlib.Metodo md5 () per calcolare il valore hash MD5 di una stringa. Abbiamo anche implementato un paio di esempi per insegnarti come calcolare e verificare il valore hash MD5 di file piccoli e grandi in Python.