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