diff --git a/src/main/java/dao/UserDAO.java b/src/main/java/dao/UserDAO.java index 51fb7649feae5ad0eae5d9c915b3ad42325f00d9..e4f8cc1a9c7f48b04548499f48bdf4e637f2d6e5 100644 --- a/src/main/java/dao/UserDAO.java +++ b/src/main/java/dao/UserDAO.java @@ -183,7 +183,16 @@ public class UserDAO { * @return a random salt */ public byte[] generateSalt() { - return null; + byte[] bytes = new byte[16]; + try{ + SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + + random.nextBytes(bytes); + } + catch (NoSuchAlgorithmException e){ + e.printStackTrace(); + } + return bytes; } /** @@ -192,8 +201,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 hashedPassword = null; + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); //lager et objekt av messageDigest + //bruker alogritmen SHA-256 siden den er lenger, mer kompleks og dermed tryggere. + md.update(salt); //gjør passordet om til bytes. + byte[] bytes = md.digest(password.getBytes()); + + StringBuilder stringBuilder = new StringBuilder(); //lager et objekt av klassen stringbuilder + for (int i = 0; i < bytes.length; i++) { // gjør salt(bytes) om til string + stringBuilder.append(Integer.toString((bytes[i] & 0xff) + 0x100, + 16).substring(1)); + } + hashedPassword = stringBuilder.toString(); + } + catch (NoSuchAlgorithmException e){ + e.printStackTrace(); + } + return hashedPassword; } /** @@ -203,7 +230,7 @@ public class UserDAO { * @param password password as String, if null it should not be updated * @return true if success on new username, false if not */ - public boolean editUser (int userId, String username, String password) { + public boolean editUser (int userId, String username, String password){ Connection connection = null; PreparedStatement preparedStatement = null; boolean updatePassword = false; diff --git a/src/main/java/resources/UserResource.java b/src/main/java/resources/UserResource.java index e406fae28f4258dcb9af22d6a05835977b006606..0d3e616a94ad97cf541c9c9d4a2fdeb75e498dae 100644 --- a/src/main/java/resources/UserResource.java +++ b/src/main/java/resources/UserResource.java @@ -5,6 +5,7 @@ import data.User; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; +import java.security.NoSuchAlgorithmException; import java.time.LocalDateTime; import java.util.Date; import java.util.List; diff --git a/src/main/webapp/js/index.js b/src/main/webapp/js/index.js index 87c0ac47e7274baae2a6f544d6cf3f1e7afe823b..cbd282de429191309469d27b00e22aba5d6cf879 100644 --- a/src/main/webapp/js/index.js +++ b/src/main/webapp/js/index.js @@ -44,6 +44,4 @@ function loadApplication(user) { sessionStorage.setItem("username", user.username); window.location.href = "../app.html" -}ion.href = "../app.html" - } \ No newline at end of file diff --git a/src/test/java/UserDAOTest.java b/src/test/java/UserDAOTest.java index 9d8faca42c5c0fb99df8b9c46dfbb60495123161..ea85ca5b92647068bd4277966e9664b696ec7478 100644 --- a/src/test/java/UserDAOTest.java +++ b/src/test/java/UserDAOTest.java @@ -132,6 +132,7 @@ public class UserDAOTest extends JerseyTest { } } + @After public void tearDown () { try {