/* * This file is part of ToolStats. * * ToolStats is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ToolStats 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ToolStats. If not, see . */ package lol.hyper.toolstats.tools; import lol.hyper.toolstats.ToolStats; import org.bukkit.Material; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.UUID; public class HashMaker { private final ToolStats toolStats; public HashMaker(ToolStats toolStats) { this.toolStats = toolStats; } public String makeHash(Material itemType, UUID player, long timestamp) { String input = itemType.toString() + player.toString() + timestamp; try { MessageDigest md = MessageDigest.getInstance("SHA-256"); byte[] hashBytes = md.digest(input.getBytes(StandardCharsets.UTF_8)); StringBuilder hexString = new StringBuilder(); for (byte b : hashBytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString(); } catch (NoSuchAlgorithmException exception) { toolStats.logger.warning("Unable to generate hash for " + player + "!"); toolStats.logger.warning("Generating a random UUID instead."); exception.printStackTrace(); return java.util.UUID.randomUUID().toString(); } } }