diff --git a/pom.xml b/pom.xml index b8ce5ef..b591b7b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.imyeyu.utils timi-utils - 0.0.1 + 0.0.2 21 @@ -79,6 +79,11 @@ timi-java 0.0.1 + + de.mkammerer + argon2-jvm + 2.12 + org.junit.jupiter junit-jupiter diff --git a/src/main/java/com/imyeyu/utils/Digest.java b/src/main/java/com/imyeyu/utils/Digest.java index 48a8cbf..c77a823 100644 --- a/src/main/java/com/imyeyu/utils/Digest.java +++ b/src/main/java/com/imyeyu/utils/Digest.java @@ -1,5 +1,8 @@ package com.imyeyu.utils; +import de.mkammerer.argon2.Argon2; +import de.mkammerer.argon2.Argon2Factory; + import java.math.BigInteger; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; @@ -80,4 +83,18 @@ public class Digest { } return result.toString(); } + + public static String argon2id(String password) { + return argon2id(10, 65536, 1, password); + } + + public static String argon2id(int iterations, int memory, int parallelism, String password) { + Argon2 argon2id = Argon2Factory.create(Argon2Factory.Argon2Types.ARGON2id); + return argon2id.hash(iterations, memory, parallelism, password.toCharArray()); + } + + public static boolean argon2idVerify(String passwordHash, String password) { + Argon2 argon2id = Argon2Factory.create(Argon2Factory.Argon2Types.ARGON2id); + return argon2id.verify(passwordHash, password.toCharArray()); + } } diff --git a/src/test/java/test/TestDigest.java b/src/test/java/test/TestDigest.java new file mode 100644 index 0000000..a3fabf7 --- /dev/null +++ b/src/test/java/test/TestDigest.java @@ -0,0 +1,22 @@ +package test; + +import com.imyeyu.utils.Digest; +import com.imyeyu.utils.Time; +import org.junit.jupiter.api.Test; + +/** + * @author 夜雨 + * @since 2025-10-30 16:55 + */ +public class TestDigest { + + @Test + public void testArgon2id() { + String pwd = "hello argon"; + long start = Time.now(); + String hash = Digest.argon2id(pwd); + System.out.println("digest time: " + (Time.now() - start) + "ms"); + System.out.println(hash); + assert Digest.argon2idVerify(hash, pwd); + } +} \ No newline at end of file