Created
November 9, 2021 15:04
-
-
Save nhsteck/945d795a07a7999e7f1adc60152638c1 to your computer and use it in GitHub Desktop.
How to generate Argon2 in Java?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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