Hashing delle password in Java con Argon2
Argon2 è un algoritmo di password hashing, tra l'altro vincitore del Password Hasing Competion nel 2015.
Oggi vediamo come usarlo in Java attraverso una libreria apposita.
L'algoritmo ha tre varianti:
- Argon2d usato principalmente per la Cryptocurrency
- Argon2i usato principalmente per il password hashing
- Argon2id un ibrido, da usare quando non siete sicuri
Oltre a questo possiamo configurare anche 5 parametri:
- Salt length -> la lunghezza del random salt
- Key length -> lunghezza dell'hash generato
- Iterations -> numero di iterazioni; attenzione che più iterazioni equivalgono a più tempo
- Memory -> la memoria usata dall'algoritmo calcolata in kibibytes (1k = 1024 bytes)
- Parallelism -> numero di threads
Se usate Maven:
<dependency>
<groupId>de.mkammerer</groupId>
<artifactId>argon2-jvm</artifactId>
<version>2.7</version>
</dependency>
Qui sotto un esempio di codice:
import de.mkammerer.argon2.Argon2;
import de.mkammerer.argon2.Argon2Factory;
public class Main {
public static void main(String[] args) {
Argon2 argon2 = Argon2Factory.create(
Argon2Factory.Argon2Types.ARGON2id,
100,
64
);
String password = "LA_MIA_PWD";
String hash = argon2.hash(10, 65536, 1, password.toCharArray());
System.out.println(hash);
}
}
Fate qualche esperimento per capire meglio le varie opzioni di configurazione.
Enjoy!
java argon2 hashing
Commentami!