Hash della password in Java con BCrypt

Mattepuffo's logo
Hash della password in Java con BCrypt

Hash della password in Java con BCrypt

Oggi vediamo come creare un hash per la password in Java usando BCrypt.

La libreria che useremo è quella che fa parte del package org.springframework.security.

Se usate Maven:

<dependencies>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
    </dependencies>

Se usate Gradle (io l'ho usata anche in una app Android):

implementation group: 'org.springframework.security', name: 'spring-security-crypto', version: '5.2.2.RELEASE'

A questo punto vediamo un pò di codice; in questo primo esempio vediamo come creare l'hash che poi andrà salvato in un database:

import org.springframework.security.crypto.bcrypt.BCrypt;

public class Main {

    public static void main(String[] args) {
        String pwd = "CIAOCOMESTAI??";
        String hash = BCrypt.hashpw(pwd, BCrypt.gensalt());
        System.out.println(hash);
    }

}

Qui sotto l'esempio per fare il check:

import org.springframework.security.crypto.bcrypt.BCrypt;

public class Main {

    public static void main(String[] args) {
        if (BCrypt.checkpw(PWD_INSERITA_UTENTE, HASH_SALVATO_SU_DB)) {
            System.out.println("Login effettuato con successo");
        } else {
            System.out.println("Le credenziali sono errate");
        }
    }

}

Quindi sono due momenti diversi:

  • il primo esempio tratta il discorso di creare l'hash che poi verrà salvato nel database insieme alle altre informazioni dell'utente
  • il secondo tratta di come controllare la password in chiaro inserita dall'utente con l'hash che vi arriva dal database

Enjoy!


Condividi

Commentami!