Introduzione
In questo tutorial, esploreremo come combinare le librerie standard di Python, in particolare math, datetime e random, per creare un´applicazione pratica e divertente: un generatore di password sicure. Utilizzeremo la libreria random per generare caratteri casuali, datetime per aggiungere timestamp alle password generate e math per calcolare la forza della password in base alla sua lunghezza e complessità.
Codice completo
import random
import string
import datetime
import math
def genera_password(lunghezza=12):
"""Genera una password casuale di una lunghezza specificata."""
caratteri = string.ascii_letters + string.digits + string.punctuation
password = ´´.join(random.choice(caratteri) for _ in range(lunghezza))
return password
def forza_password(password):
"""Calcola la forza della password in base alla lunghezza e alla varietà di caratteri."""
lunghezza = len(password)
varietà = len(set(password)) # Numero di caratteri unici
forza = lunghezza * math.log(varietà, 2) # Formula per calcolare la forza
return forza
def main():
lunghezza_password = int(input("Inserisci la lunghezza della password desiderata: "))
password = genera_password(lunghezza_password)
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"nPassword generata: {password}")
print(f"Timestamp: {timestamp}")
print(f"Forza della password: {forza_password(password):.2f} bit")
if __name__ == "__main__":
main()
Spiegazione
Analizziamo il codice riga per riga per capire come funziona il nostro generatore di password.
- Importazione delle librerie: Iniziamo importando le librerie necessarie:
randomper la generazione casuale,stringper i caratteri,datetimeper gestire le date emathper i calcoli matematici. - Funzione
genera_password: Questa funzione accetta un argomentolunghezzae genera una password casuale utilizzando una combinazione di lettere maiuscole, minuscole, numeri e simboli. Utilizziamo una comprensione di lista per creare la password. - Funzione
forza_password: Qui calcoliamo la forza della password. La forza è determinata dalla lunghezza della password e dalla varietà di caratteri unici. Utilizziamo la formulalunghezza * log(varietà, 2)per ottenere un valore in bit che rappresenta la sicurezza della password. - Funzione
main: Questa è la nostra funzione principale. Chiediamo all´utente di inserire la lunghezza desiderata per la password, generiamo la password e stampiamo il risultato insieme a un timestamp e alla forza della password.
Best practice
Quando si lavora con la generazione di password e la sicurezza, è importante seguire alcune best practice:
- Utilizzare una lunghezza adeguata: Le password più lunghe sono generalmente più sicure. Si consiglia di utilizzare almeno 12 caratteri.
- Includere diversi tipi di caratteri: Assicurati che la password contenga lettere maiuscole, minuscole, numeri e simboli per aumentare la complessità.
- Non utilizzare informazioni personali: Evita di includere nomi, date di nascita o altre informazioni facilmente reperibili.
- Generare password casuali: Utilizza sempre metodi di generazione casuale per evitare password prevedibili.
Riepilogo
In questo tutorial, abbiamo creato un semplice generatore di password utilizzando le librerie standard di Python: math, datetime e random. Abbiamo visto come generare password casuali, calcolare la loro forza e aggiungere timestamp. Queste tecniche possono essere utilizzate in vari progetti per migliorare la sicurezza delle applicazioni.
