diff --git a/src/main/java/dao/Database.java b/src/main/java/dao/Database.java index 232a69f167c7f3550684f8672c276e1aae800a6e..e5508022cb0237ec442350a3e37ce020649457e1 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 51fb7649feae5ad0eae5d9c915b3ad42325f00d9..17020d26a54a12b2f04656ce77ccba580b25c1de 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 16be2c9af52022fc6067c0bc6da55b547eae36d3..f862dcd014a941aa30dfef630f7df37bab7515b6 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 5712a798cbe315637d0b34089b59ddb0ee3fc114..47202779787c627be7186eaaacb7118b625b68b8 100644 --- a/src/main/java/resources/CalculatorResource.java +++ b/src/main/java/resources/CalculatorResource.java @@ -1,5 +1,9 @@ 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 9d8faca42c5c0fb99df8b9c46dfbb60495123161..9e1d9f869649dba2e179bc2693b4e057c643135f 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