From 1f49bff69dec6fcd96764ecded0cbacd85865aa1 Mon Sep 17 00:00:00 2001 From: Daniel Ginovker Date: Wed, 9 Oct 2019 14:32:24 -0400 Subject: [PATCH] Passwords (#43) --- .../src/redone/game/players/PlayerSave.java | 39 +++++++++++++++++- .../redone/game/players/PlayerSave.class | Bin 24308 -> 25728 bytes 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/2006Redone Server/src/redone/game/players/PlayerSave.java b/2006Redone Server/src/redone/game/players/PlayerSave.java index 099c46f6..2019e257 100644 --- a/2006Redone Server/src/redone/game/players/PlayerSave.java +++ b/2006Redone Server/src/redone/game/players/PlayerSave.java @@ -1,6 +1,10 @@ package redone.game.players; import java.io.*; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Base64; import redone.util.Misc; @@ -61,10 +65,19 @@ public class PlayerSave { if (!doRealLogin) break; if (token.equals("character-password")) { + System.out.println("file password: " + token.toLowerCase()); + System.out.println("given password: " + playerPass); if (playerPass.equalsIgnoreCase(token2)) { - playerPass = token2; + // Hash their password and store it! + playerPass = passwordHash(token2); + System.out.println("Matched plaintext"); + } else if (passwordHash(playerPass).equalsIgnoreCase(token2)) { + System.out.println("Matched hashed password"); + playerPass = token2; //Valid password } else { - return 3; + System.out.println("hash doesn't match: " + passwordHash(playerPass).toLowerCase()); + System.out.println("currently is: " + passwordHash(token2).toLowerCase()); + return 3; //Invalid password } } break; @@ -477,6 +490,24 @@ public class PlayerSave { return 14; } + private static String passwordHash(String token2) { + String hashed = "HAS HAS FAILED!"; + try { + MessageDigest digest = MessageDigest.getInstance("MD5"); + byte[] hash = digest.digest(token2.getBytes(StandardCharsets.UTF_8)); + + hashed = Base64.getEncoder().encodeToString(hash); + + digest = MessageDigest.getInstance("SHA-256"); + hash = digest.digest(hashed.getBytes(StandardCharsets.UTF_8)); + + hashed = Base64.getEncoder().encodeToString(hash); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return hashed; + } + /** * Saving **/ @@ -510,6 +541,10 @@ public class PlayerSave { player.playerName.length()); characterfile.newLine(); if (player.playerRights == 0) { + if (player.playerPass.length() < 40) + { + player.playerPass = passwordHash(player.playerPass); + } characterfile.write("character-password = ", 0, 21); characterfile.write(player.playerPass, 0, player.playerPass.length()); diff --git a/CompiledServer/production/2006rebotted/redone/game/players/PlayerSave.class b/CompiledServer/production/2006rebotted/redone/game/players/PlayerSave.class index 81e89cf3f0c4ff6f52c45d9e8d334c687728e5e1..f5055049b463690904fe7a7813a7f93fcb0b3994 100644 GIT binary patch literal 25728 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