Utilizzo Creativo delle Librerie Standard: math, datetime e random

by theArchitect
SHARE
Utilizzo Creativo delle Librerie Standard: math, datetime e random
© Guida-HTML5.it

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: random per la generazione casuale, string per i caratteri, datetime per gestire le date e math per i calcoli matematici.
  • Funzione genera_password: Questa funzione accetta un argomento lunghezza e 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 formula lunghezza * 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.

Approfondisci con risorse ufficiali

SHARE