Hashing delle password in Java con Argon2

Mattepuffo's logo
Hashing delle password in Java con Argon2

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!


Share this Post

Commentami!