Add encrypt password

This commit is contained in:
Данил
2025-06-15 14:50:12 +07:00
parent 6567addfae
commit f525aaec3e
2 changed files with 56 additions and 19 deletions
@@ -47,24 +47,27 @@ public class DataBase {
if(!connection.isValid(100)) if(!connection.isValid(100))
OpenConnection(); OpenConnection();
PreparedStatement saveUser_stmt = connection.prepareStatement("INSERT INTO users(login, password) VALUE (?, ?)"); PreparedStatement saveUser_stmt = connection.prepareStatement("INSERT INTO users_v2(login, password) VALUE (?, ?)");
saveUser_stmt.setString(1, login); saveUser_stmt.setString(1, login);
saveUser_stmt.setString(2, password); saveUser_stmt.setString(2, password);
saveUser_stmt.executeUpdate(); saveUser_stmt.executeUpdate();
PreparedStatement findID = connection.prepareStatement("SELECT id FROM users WHERE login = ?"); PreparedStatement findID = connection.prepareStatement("SELECT id FROM users_v2 WHERE login = ?");
findID.setString(1, login); findID.setString(1, login);
ResultSet newID = findID.executeQuery(); ResultSet newID = findID.executeQuery();
newID.next(); newID.next();
return new User(newID.getInt(1), login, password); User user = new User(newID.getInt(1), login, password);
newID.close();
return user;
} }
public void AddTask(Task task, User user) throws SQLException { public void AddTask(Task task, User user) throws SQLException {
if(!connection.isValid(100)) if(!connection.isValid(100))
OpenConnection(); OpenConnection();
PreparedStatement addTask = connection.prepareStatement("INSERT INTO tasks(ID," + PreparedStatement addTask = connection.prepareStatement("INSERT INTO tasks_v2(ID," +
" TaskName," + " TaskName," +
" TaskDescription," + " TaskDescription," +
" TaskDate," + " TaskDate," +
@@ -85,7 +88,7 @@ public class DataBase {
if(!connection.isValid(100)) if(!connection.isValid(100))
OpenConnection(); OpenConnection();
PreparedStatement addTask = connection.prepareStatement("UPDATE tasks SET TaskName = ?," + PreparedStatement addTask = connection.prepareStatement("UPDATE tasks_v2 SET TaskName = ?," +
" TaskDescription = ?," + " TaskDescription = ?," +
" TaskDate = ?," + " TaskDate = ?," +
" TaskTime = ?" + " TaskTime = ?" +
@@ -104,7 +107,7 @@ public class DataBase {
if(!connection.isValid(100)) if(!connection.isValid(100))
OpenConnection(); OpenConnection();
PreparedStatement remove = connection.prepareStatement("DELETE FROM tasks WHERE ID = ? AND UserOwner = ?"); PreparedStatement remove = connection.prepareStatement("DELETE FROM tasks_v2 WHERE ID = ? AND UserOwner = ?");
remove.setLong(1, taskID); remove.setLong(1, taskID);
remove.setLong(2, user.getID()); remove.setLong(2, user.getID());
remove.executeUpdate(); remove.executeUpdate();
@@ -114,7 +117,7 @@ public class DataBase {
if(!connection.isValid(100)) if(!connection.isValid(100))
OpenConnection(); OpenConnection();
PreparedStatement update = connection.prepareStatement("UPDATE users SET password = ? WHERE id = ?"); PreparedStatement update = connection.prepareStatement("UPDATE users_v2 SET password = ? WHERE id = ?");
update.setString(1, password); update.setString(1, password);
update.setInt(2, userID); update.setInt(2, userID);
update.executeUpdate(); update.executeUpdate();
@@ -124,7 +127,7 @@ public class DataBase {
if(!connection.isValid(100)) if(!connection.isValid(100))
OpenConnection(); OpenConnection();
PreparedStatement findTasks = connection.prepareStatement("SELECT * FROM tasks WHERE UserOwner = ?"); PreparedStatement findTasks = connection.prepareStatement("SELECT * FROM tasks_v2 WHERE UserOwner = ?");
findTasks.setInt(1, user.getID()); findTasks.setInt(1, user.getID());
ResultSet result = findTasks.executeQuery(); ResultSet result = findTasks.executeQuery();
@@ -138,6 +141,7 @@ public class DataBase {
result.getString(6)); // TaskTime result.getString(6)); // TaskTime
taskList.add(task); taskList.add(task);
} }
result.close();
return taskList; return taskList;
} }
@@ -145,15 +149,18 @@ public class DataBase {
if(!connection.isValid(100)) if(!connection.isValid(100))
OpenConnection(); OpenConnection();
PreparedStatement getUser_stmt = connection.prepareStatement("SELECT * FROM users WHERE login = ?"); PreparedStatement getUser_stmt = connection.prepareStatement("SELECT * FROM users_v2 WHERE login = ?");
getUser_stmt.setString(1, login); getUser_stmt.setString(1, login);
ResultSet resultSet = getUser_stmt.executeQuery(); ResultSet resultSet = getUser_stmt.executeQuery();
if(!resultSet.next()) if(!resultSet.next()) {
resultSet.close();
return null; return null;
}
int id = resultSet.getInt(1); int id = resultSet.getInt(1);
String pass = resultSet.getNString(3); String pass = resultSet.getNString(3);
resultSet.close();
return new User(id, login, pass); return new User(id, login, pass);
} }
} }
@@ -9,6 +9,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -37,6 +39,25 @@ public class TaskTrakerServerApplication {
System.exit(code); System.exit(code);
} }
private static String convertByteArrayToHexString(byte[] arrayBytes) {
StringBuilder stringBuffer = new StringBuilder();
for (byte arrayByte : arrayBytes) {
stringBuffer.append(Integer.toString((arrayByte & 0xff) + 0x100, 16)
.substring(1));
}
return stringBuffer.toString();
}
private static String getMD5Hash(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(input.getBytes());
return convertByteArrayToHexString(messageDigest);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
@GetMapping("/admin/shutdown") @GetMapping("/admin/shutdown")
void shutdown(@RequestParam(name = "password", defaultValue = "null") String password) { void shutdown(@RequestParam(name = "password", defaultValue = "null") String password) {
if(!password.equals(API_KEYS.ADMIN_PASSWORD)) if(!password.equals(API_KEYS.ADMIN_PASSWORD))
@@ -53,8 +74,9 @@ public class TaskTrakerServerApplication {
return "{\n\t\"status\":\"error\"\n}"; return "{\n\t\"status\":\"error\"\n}";
else { else {
try { try {
String passHash = getMD5Hash(pass);
User user = UserRepository.getRepository().getUserByLogin(login); User user = UserRepository.getRepository().getUserByLogin(login);
if (user == null || !user.getPassword().equals(pass)) if (user == null || !user.getPassword().equals(passHash))
return "{\n\t\"status\":\"error\"\n}"; return "{\n\t\"status\":\"error\"\n}";
else else
return "{\n\t\"status\":\"ok\"\n}"; return "{\n\t\"status\":\"ok\"\n}";
@@ -75,7 +97,8 @@ public class TaskTrakerServerApplication {
else if (login.equals("null") || pass.equals("null")) else if (login.equals("null") || pass.equals("null"))
return "{\n\t\"status\":\"error\",\n\t\"token\":\"null\"\n}"; return "{\n\t\"status\":\"error\",\n\t\"token\":\"null\"\n}";
try { try {
User user = UserRepository.getRepository().AddUser(login, pass); String passHash = getMD5Hash(pass);
User user = UserRepository.getRepository().AddUser(login, passHash);
if(user == null) if(user == null)
return "{\n\t\"status\":\"error\"\n}"; return "{\n\t\"status\":\"error\"\n}";
@@ -94,11 +117,13 @@ public class TaskTrakerServerApplication {
return "{\n\t\"status\":\"error\"\n}"; return "{\n\t\"status\":\"error\"\n}";
try { try {
String passHash = getMD5Hash(oldPassword);
User user = UserRepository.getRepository().getUserByLogin(login); User user = UserRepository.getRepository().getUserByLogin(login);
if(user == null || !user.getPassword().equals(oldPassword)) if(user == null || !user.getPassword().equals(passHash))
return "{\n\t\"status\":\"error\"\n}"; return "{\n\t\"status\":\"error\"\n}";
user.setPassword(newPassword); passHash = getMD5Hash(newPassword);
user.setPassword(passHash);
return "{\n\t\"status\":\"ok\"\n}"; return "{\n\t\"status\":\"ok\"\n}";
} catch (SQLException e) { } catch (SQLException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
@@ -112,9 +137,10 @@ public class TaskTrakerServerApplication {
@RequestParam(name = "id") long taskID) { @RequestParam(name = "id") long taskID) {
if (!login.equals("null") || !pass.equals("null")) { if (!login.equals("null") || !pass.equals("null")) {
try { try {
String passHash = getMD5Hash(pass);
User user = UserRepository.getRepository().getUserByLogin(login); User user = UserRepository.getRepository().getUserByLogin(login);
if (user == null || !user.getPassword().equals(pass)) if (user == null || !user.getPassword().equals(passHash))
return new Task(0, 0, null, null, null, null); return new Task(0, 0, null, null, null, null);
List<Task> taskList = DataBase.getInstance().getTaskList(user); List<Task> taskList = DataBase.getInstance().getTaskList(user);
@@ -138,8 +164,9 @@ public class TaskTrakerServerApplication {
return new ArrayList<>(); return new ArrayList<>();
else { else {
try { try {
String passHash = getMD5Hash(pass);
User user = UserRepository.getRepository().getUserByLogin(login); User user = UserRepository.getRepository().getUserByLogin(login);
if (user == null || !user.getPassword().equals(pass)) if (user == null || !user.getPassword().equals(passHash))
return new ArrayList<>(); return new ArrayList<>();
else else
return DataBase.getInstance().getTaskList(user); return DataBase.getInstance().getTaskList(user);
@@ -156,8 +183,9 @@ public class TaskTrakerServerApplication {
@RequestBody Task task) { @RequestBody Task task) {
if (!login.equals("null") && !pass.equals("null") && task != null) { if (!login.equals("null") && !pass.equals("null") && task != null) {
try { try {
String passHash = getMD5Hash(pass);
User user = UserRepository.getRepository().getUserByLogin(login); User user = UserRepository.getRepository().getUserByLogin(login);
if (user == null || !user.getPassword().equals(pass)) if (user == null || !user.getPassword().equals(passHash))
return; return;
DataBase.getInstance().AddTask(task, user); DataBase.getInstance().AddTask(task, user);
} catch (SQLException e) { } catch (SQLException e) {
@@ -172,8 +200,9 @@ public class TaskTrakerServerApplication {
@RequestBody Task task) { @RequestBody Task task) {
if (!login.equals("null") && !pass.equals("null") && task != null) { if (!login.equals("null") && !pass.equals("null") && task != null) {
try { try {
String passHash = getMD5Hash(pass);
User user = UserRepository.getRepository().getUserByLogin(login); User user = UserRepository.getRepository().getUserByLogin(login);
if (user == null || !user.getPassword().equals(pass)) if (user == null || !user.getPassword().equals(passHash))
return; return;
DataBase.getInstance().UpdateTask(task, user); DataBase.getInstance().UpdateTask(task, user);
} catch (SQLException e) { } catch (SQLException e) {
@@ -188,8 +217,9 @@ public class TaskTrakerServerApplication {
@RequestParam(name = "id", defaultValue = "-1") long id) { @RequestParam(name = "id", defaultValue = "-1") long id) {
if (!login.equals("null") && !pass.equals("null") && id != -1) { if (!login.equals("null") && !pass.equals("null") && id != -1) {
try { try {
String passHash = getMD5Hash(pass);
User user = UserRepository.getRepository().getUserByLogin(login); User user = UserRepository.getRepository().getUserByLogin(login);
if (user == null || !user.getPassword().equals(pass)) if (user == null || !user.getPassword().equals(passHash))
return; return;
DataBase.getInstance().RemoveTask(id, user); DataBase.getInstance().RemoveTask(id, user);
} catch (SQLException e) { } catch (SQLException e) {