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!
java maven gradle bcrypt springframework
Commentami!