Class PasswordUtility

java.lang.Object
com.modulink.Model.Utente.PasswordUtility

public class PasswordUtility extends Object
Classe di utilità per la gestione della crittografia e verifica delle password.

Questa classe fornisce metodi statici per mettere in sicurezza le credenziali degli utenti utilizzando l'algoritmo BCrypt. BCrypt è uno standard di settore che incorpora automaticamente un "salt" casuale per proteggere dagli attacchi tramite rainbow table.

Caratteristiche principali:

  • Salting Automatico: Ogni hash generato è unico, anche per password identiche.
  • Adaptive Hashing: L'algoritmo è progettato per essere computazionalmente oneroso, rallentando gli attacchi brute-force.

Utilizzare questa classe durante le fasi di registrazione (per l'hashing) e di login (per la verifica).

Version:
1.1.8
Author:
Modulink Team
See Also:
  • BCrypt
  • Constructor Details

    • PasswordUtility

      private PasswordUtility()
      Costruttore privato per prevenire l'istanziazione della classe utility.

      Lancia un'eccezione se invocato accidentalmente (anche tramite reflection), garantendo che la classe sia utilizzata solo tramite i suoi metodi statici.

  • Method Details

    • hashPassword

      public static String hashPassword(String plainPassword)
      Genera un hash sicuro a partire da una password in chiaro.

      Questo metodo utilizza BCrypt.gensalt() per generare un salt casuale e applicarlo alla password. Di conseguenza, chiamando questo metodo più volte con la stessa password, si otterranno hash differenti ogni volta.

      Da utilizzare prima di salvare la password nel database (es. in fase di registrazione). La stringa risultante include il salt e le informazioni sull'algoritmo necessarie per la verifica futura.

      Parameters:
      plainPassword - La password in chiaro inserita dall'utente.
      Returns:
      Una stringa contenente l'hash cifrato della password (lunghezza tipica 60 caratteri).
    • checkPassword

      public static boolean checkPassword(String plainPassword, String hashedPassword)
      Verifica la corrispondenza tra una password in chiaro e un hash memorizzato.

      Questo metodo estrae il salt dall'hash memorizzato e lo utilizza per hashare la password in chiaro fornita, confrontando poi i risultati. Gestisce internamente la complessità del confronto sicuro contro attacchi temporali (timing attacks).

      Da utilizzare in fase di autenticazione (Login).

      Parameters:
      plainPassword - La password in chiaro inserita dall'utente al momento del login.
      hashedPassword - L'hash della password precedentemente generato e recuperato dal database.
      Returns:
      true se la password in chiaro corrisponde all'hash memorizzato, false altrimenti.