Skip to content

Instantly share code, notes, and snippets.

@nhsteck
Created November 9, 2021 15:04
Show Gist options
  • Save nhsteck/945d795a07a7999e7f1adc60152638c1 to your computer and use it in GitHub Desktop.
Save nhsteck/945d795a07a7999e7f1adc60152638c1 to your computer and use it in GitHub Desktop.
How to generate Argon2 in Java?
// Import library to generate Argon2
import de.mkammerer.argon2.Argon2;
import de.mkammerer.argon2.Argon2Factory;
import de.mkammerer.argon2.Argon2Factory.Argon2Types;
// Function to generaye Argon2
public static String generateArgon2(String inputString) throws Exception {
int iterations = 2;
int mem = 16;
int parallelism = 2;
int saltLen = 16;
int hashLen = 16;
Argon2Types type = Argon2Types.ARGON2d; // Argon2Types.ARGON2i and Argon2Types.ARGON2id
Argon2 argon2 = Argon2Factory.create(type, saltLen, hashLen);
char []byteInput = inputString.toCharArray();
String strHex = argon2.hash(iterations, mem, parallelism, byteInput);
return strHex;
}
// Function to verify Argon2
public static boolean verifyArgon2(String inputString, String hash) throws Exception {
int saltLen = 16;
int hashLen = 16;
Argon2Types type = Argon2Types.ARGON2d; // Argon2Types.ARGON2i and Argon2Types.ARGON2id
char []byteInput = inputString.toCharArray();
Argon2 argon2 = Argon2Factory.create(type, saltLen, hashLen);
boolean isValid = argon2.verify(hash, byteInput);
return isValid;
}
// TEST
public static void main(String[] args) {
try {
// Generate Argon2
String inputString = "nhsteck.com";
String strHex = Hash.generateArgon2(inputString);
System.out.println("Hex >> " + strHex);
// Verify Argon2
boolean isValid = Hash.verifyArgon2(inputString, strHex);
System.out.println("Verify >> " + isValid);
} catch (Exception ex) {
ex.printStackTrace();
}
}
<dependency>
<groupId>de.mkammerer</groupId>
<artifactId>argon2-jvm</artifactId>
<version>2.7</version>
</dependency>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment