From 2ed3e11ca084ccf99d95c1b7dc8242e3481f351d Mon Sep 17 00:00:00 2001 From: Maiken Louise <maiken.brechan@gmail.com> Date: Tue, 9 Mar 2021 11:45:44 +0100 Subject: [PATCH] Task 3 complete --- src/main/java/dao/Database.java | 2 +- src/main/java/dao/UserDAO.java | 29 +++++++++++++++++-- src/main/java/data/User.java | 1 + .../java/resources/CalculatorResource.java | 4 --- src/test/java/UserDAOTest.java | 9 ++++++ 5 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/main/java/dao/Database.java b/src/main/java/dao/Database.java index 232a69f..e550802 100644 --- a/src/main/java/dao/Database.java +++ b/src/main/java/dao/Database.java @@ -18,7 +18,7 @@ public class Database { private static boolean isTest = isJUnitTest(); - private static final String IP_TO_VM = "129.241.96.191"; + private static final String IP_TO_VM = "129.241.97.157"; private static String DB_URL = "jdbc:mysql://" + ((DB_CHOICE != null) ? (DB_CHOICE + ":3306/") : diff --git a/src/main/java/dao/UserDAO.java b/src/main/java/dao/UserDAO.java index 51fb764..17020d2 100644 --- a/src/main/java/dao/UserDAO.java +++ b/src/main/java/dao/UserDAO.java @@ -8,6 +8,8 @@ import java.security.SecureRandom; import java.sql.*; import java.util.ArrayList; import java.util.List; +import java.security.SecureRandom; +import java.security.MessageDigest; import static dao.Database.close; @@ -183,7 +185,10 @@ public class UserDAO { * @return a random salt */ public byte[] generateSalt() { - return null; + SecureRandom random = new SecureRandom(); + byte bytes[] = new byte[16]; + random.nextBytes(bytes); + return bytes; } /** @@ -192,8 +197,26 @@ public class UserDAO { * @param salt salt to use when hashing * @return hashedPassword, null if unsuccessful */ - public String hashPassword(String password, byte[] salt){ - return null; + + public String hashPassword(String password, byte[] salt) { + String generatedPassword=""; + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(salt); + byte[] bytes = md.digest(password.getBytes()); + + StringBuilder sb = new StringBuilder(); + + for (byte b:bytes) { + sb.append(Integer.toString((b & 0xff) + 0x100,16).substring(1)); + } + + generatedPassword=sb.toString(); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return generatedPassword; } /** diff --git a/src/main/java/data/User.java b/src/main/java/data/User.java index 16be2c9..f862dcd 100644 --- a/src/main/java/data/User.java +++ b/src/main/java/data/User.java @@ -49,4 +49,5 @@ public class User { public void setSalt(byte[] salt) { this.salt = salt; } + } diff --git a/src/main/java/resources/CalculatorResource.java b/src/main/java/resources/CalculatorResource.java index 4720277..5712a79 100644 --- a/src/main/java/resources/CalculatorResource.java +++ b/src/main/java/resources/CalculatorResource.java @@ -1,9 +1,5 @@ package resources; -<<<<<<< HEAD -import org.graalvm.compiler.hotspot.stubs.DivisionByZeroExceptionStub; -======= ->>>>>>> 2ffc5ca1cddf44a1e6d380f18eb4b10bb4578efb import javax.ws.rs.Consumes; import javax.ws.rs.POST; diff --git a/src/test/java/UserDAOTest.java b/src/test/java/UserDAOTest.java index 9d8faca..9e1d9f8 100644 --- a/src/test/java/UserDAOTest.java +++ b/src/test/java/UserDAOTest.java @@ -11,6 +11,7 @@ import org.junit.Test; import javax.ws.rs.core.Application; import java.sql.Connection; import java.sql.SQLException; +import java.sql.SQLOutput; import java.sql.Statement; import java.util.ArrayList; import java.util.List; @@ -194,4 +195,12 @@ public class UserDAOTest extends JerseyTest { assertEquals(expectedUsername,actualUsername); assertNotEquals(beforeNewUser,afterNewUser); } + + @Test + public void testHashPassword(){ + byte[] salt = userDAO.generateSalt(); + System.out.println(salt); + assertEquals(userDAO.hashPassword("Hello World", salt),userDAO.hashPassword("Hello World", salt)); + assertNotEquals(userDAO.hashPassword("Hello World", salt), userDAO.hashPassword("Yo", salt)); + } } \ No newline at end of file -- GitLab