diff options
| author | mdxd44 <ogurec332@mail.ru> | 2021-12-17 19:31:55 +0900 |
|---|---|---|
| committer | mdxd44 <ogurec332@mail.ru> | 2021-12-17 19:31:55 +0900 |
| commit | cff1b4a22bb47c8bcf064d5e8da8c7d7ef67ea52 (patch) | |
| tree | 9fc8614b144288af2749c2376c8ca523cd2a0cc0 /src/main/java/net/elytrium/limboauth/migration | |
| parent | f11b09654cc33f4c3d9239c04be5978cbe3cad2d (diff) | |
| download | LimboAuth-cff1b4a22bb47c8bcf064d5e8da8c7d7ef67ea52.tar.gz LimboAuth-cff1b4a22bb47c8bcf064d5e8da8c7d7ef67ea52.tar.bz2 LimboAuth-cff1b4a22bb47c8bcf064d5e8da8c7d7ef67ea52.zip | |
Split projects.
Diffstat (limited to 'src/main/java/net/elytrium/limboauth/migration')
| -rw-r--r-- | src/main/java/net/elytrium/limboauth/migration/MigrationHash.java | 54 | ||||
| -rw-r--r-- | src/main/java/net/elytrium/limboauth/migration/MigrationHashVerifier.java | 23 |
2 files changed, 77 insertions, 0 deletions
diff --git a/src/main/java/net/elytrium/limboauth/migration/MigrationHash.java b/src/main/java/net/elytrium/limboauth/migration/MigrationHash.java new file mode 100644 index 0000000..5296534 --- /dev/null +++ b/src/main/java/net/elytrium/limboauth/migration/MigrationHash.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2021 Elytrium + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package net.elytrium.limboauth.migration; + +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public enum MigrationHash { + + @SuppressWarnings("unused") + AUTHME((hash, password) -> { + String[] arr = hash.split("\\$"); // $SHA$salt$hash + return arr.length == 4 && arr[3].equals(MigrationHash.getSHA256(MigrationHash.getSHA256(password) + arr[2])); + }); + + final MigrationHashVerifier verifier; + + MigrationHash(MigrationHashVerifier verifier) { + this.verifier = verifier; + } + + public boolean checkPassword(String hash, String password) { + return this.verifier.checkPassword(hash, password); + } + + private static String getSHA256(String string) { + try { + MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); + messageDigest.reset(); + messageDigest.update(string.getBytes(StandardCharsets.UTF_8)); + byte[] array = messageDigest.digest(); + return String.format("%0" + (array.length << 1) + "x", new BigInteger(1, array)); + } catch (NoSuchAlgorithmException e) { + throw new IllegalArgumentException(e); + } + } +} diff --git a/src/main/java/net/elytrium/limboauth/migration/MigrationHashVerifier.java b/src/main/java/net/elytrium/limboauth/migration/MigrationHashVerifier.java new file mode 100644 index 0000000..cbe5135 --- /dev/null +++ b/src/main/java/net/elytrium/limboauth/migration/MigrationHashVerifier.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2021 Elytrium + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package net.elytrium.limboauth.migration; + +public interface MigrationHashVerifier { + + boolean checkPassword(String hash, String password); +} |
