Pubblicato il

python

bcrypt

hashing


Come criptare o codificare password in python con libreria bcrypt

La crittografia è uno degli strumenti più importanti di oggi nel mondo dell'informatica. Perché è cosi importante? Beh la crittografia viene utilizzata (oltre a tanti altri utilizzi) per nascondere password e dati privati di un utente. Senza la possibilità di criptare un testo o file, sarebbe impossibile dal punto di vista della web security implementare un sistema sicuro e privato. In questa piccola guida andiamo a vedere come sia possibile criptare una password in modo da poterla salvare con sicurezza in un database senza correre il rischio che questa venga letta da un utente esterno. 

Che cos'è il hashing?

In parole semplici, il hashing consiste nel processo di conversione da un valore ad un altro. Per esempio convertire un un numero o oggetto in una rappresentazione sotto forma di stringa. La funzione hash è la funzione che esegue questa conversione. Una buona hash function deve essere a "senso unico" nel senso che una volta ottenuta la conversione non è possibile risalire al valore originale.  In una buona hash function l'unico modo per ottenere il valore originale è tramite un metodo brute force, ma se la funzione hash è abbastanza complicata, eseguire un attacco brute force è praticamente impossibile. 

Che cos'è bcrypt

Bcrypt è un algoritmo per eseguire il hashing di password che è protetto sia da attacchi "rainbow table" che "brute force". Quasi tutti i linguaggi di programmazione moderni hanno una implementazione dell'algoritmo bcrypt sotto forma di librerie esterne. Oggi andremo a vedere come usare bcrypt nel nostro script Python. 

Come installare bcrypt con pip

Come potete indovinare, la libreria che andremo ad usare si chiama proprio bcrypt. Prima di tutto vediamo come installare questa libreria usando pip.

pip install bcrypt

Una volta installata la libreria bcrypt vediamo come utilizzarla!

Come codificare una password in Python

Vediamo in basso il codice per criptare la nostra password usando il modulo bcrypt per Python.

import bcrypt
password = b'lamiapassowrdsegreta'
salt = bcrypt.gensalt()
hashed = bcrypt.hashpw(password, salt)
print(hashed)

Come potete vedere, come prima cosa importiamo la libreria. In una variabile chiamata password salviamo la nostra string da criptare. L'algoritmo bcrypt utilizza il concetto di salting per aggiungere una "randomizzazione" al processo del hashing in modo da rendere il risultato ancora più sicuro. Possiamo generare un salt in maniera random utilizzando il metodo gensalt(). Poi usando il metodo hashpw(password,salt) la nostra password viene criptata. Possiamo vederla in output quando eseguiamo lo script mostrato in alto. 

Come decriptare una password in Python con bcrypt

Per decodificare la password è ancora più semplice. Basta utilizzare il metodo checkpw(password,hashed). Questa funzione prende due argomenti: il primo è la password da controllare e il secondo è la password codificata. Vediamo in basso il codice completo:

import bcrypt
password = b'lamiapassowrdsegreta'
salt = bcrypt.gensalt()
hashed = bcrypt.hashpw(password, salt)
if bcrypt.checkpw(password, hashed):
    print("Password corretta")

Come potete vedere il metodo checkpw restituisce un valore di tipo boolean che poi possiamo inserire all'interno di una condizione IF per verificare se le due password combaciano. Ci siamo! Abbiamo visto come criptare e decriptare una password usando il metodo dell'Hashing con la libreria bcrypt per Python. 

Se hai una domanda puoi chiedere qualsiasi cosa nei commenti in basso

Grazie per aver letto questa guida su Devnews.it

Spero ti sia stata utile in qualche modo. Ti prego di supportare questa pagina mettendo mi piace alle nostre pagine social cliccando un basso, dove pubblichiamo regolermente notizie, tutorial e fatti curiosi sull'informatica. Grazie e ci vediamo alla prossima :)