From 5221e9a993e5aec3fe3859bf0b3d00778fbc794c Mon Sep 17 00:00:00 2001 From: Petr Ilin Date: Sun, 6 Feb 2022 22:24:42 +0300 Subject: One more hashing algo (Argon2) --- .../net/elytrium/limboauth/migration/MigrationHash.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/main/java/net/elytrium/limboauth/migration') diff --git a/src/main/java/net/elytrium/limboauth/migration/MigrationHash.java b/src/main/java/net/elytrium/limboauth/migration/MigrationHash.java index d127b1e..4f7ae24 100644 --- a/src/main/java/net/elytrium/limboauth/migration/MigrationHash.java +++ b/src/main/java/net/elytrium/limboauth/migration/MigrationHash.java @@ -17,6 +17,8 @@ package net.elytrium.limboauth.migration; +import de.mkammerer.argon2.Argon2; +import de.mkammerer.argon2.Argon2Factory; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; @@ -24,12 +26,12 @@ import java.security.NoSuchAlgorithmException; @SuppressWarnings("unused") public enum MigrationHash { - AUTHME((hash, password) -> { String[] arr = hash.split("\\$"); // $SHA$salt$hash return arr.length == 4 && arr[3].equals(MigrationHash.getDigest(MigrationHash.getDigest(password, "SHA-256") + arr[2], "SHA-256")); }), + ARGON2(new Argon2Verifier()), SHA512_NP((hash, password) -> { String[] arr = hash.split("\\$"); // SHA$salt$hash return arr.length == 3 && arr[2].equals(MigrationHash.getDigest(password + arr[1], "SHA-512")); @@ -71,4 +73,17 @@ public enum MigrationHash { throw new IllegalArgumentException(e); } } + + private static class Argon2Verifier implements MigrationHashVerifier { + private Argon2 argon2; + + @Override + public boolean checkPassword(String hash, String password) { + if (this.argon2 == null) { + this.argon2 = Argon2Factory.create(); + } + + return this.argon2.verify(hash, password.getBytes(StandardCharsets.UTF_8)); + } + } } -- cgit