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