Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
devops-workshop
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Sigurd Almåsbakk Skogmo
devops-workshop
Commits
2a7904da
Commit
2a7904da
authored
5 years ago
by
Sigurd Almåsbakk Skogmo
Browse files
Options
Downloads
Plain Diff
Merge branch 'saltpassword' into 'master'
Prøvde å fiske salt og hash (TEST) See merge request
!6
parents
21ea65dc
68a8843b
No related branches found
No related tags found
1 merge request
!6
Prøvde å fiske salt og hash (TEST)
Pipeline
#72112
passed
5 years ago
Stage: test
Stage: deploy
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/java/dao/UserDAO.java
+61
-28
61 additions, 28 deletions
src/main/java/dao/UserDAO.java
src/test/java/UserDAOTest.java
+8
-1
8 additions, 1 deletion
src/test/java/UserDAOTest.java
with
69 additions
and
29 deletions
src/main/java/dao/UserDAO.java
+
61
−
28
View file @
2a7904da
...
@@ -19,6 +19,7 @@ public class UserDAO {
...
@@ -19,6 +19,7 @@ public class UserDAO {
/**
/**
* Returns a List of all registered users
* Returns a List of all registered users
*
* @return List of Users
* @return List of Users
*/
*/
public
List
<
User
>
getUsers
()
{
public
List
<
User
>
getUsers
()
{
...
@@ -49,6 +50,7 @@ public class UserDAO {
...
@@ -49,6 +50,7 @@ public class UserDAO {
/**
/**
* Returns a User object for given username
* Returns a User object for given username
*
* @param username Username as String
* @param username Username as String
* @return requested user object if found, null if not found
* @return requested user object if found, null if not found
*/
*/
...
@@ -73,6 +75,7 @@ public class UserDAO {
...
@@ -73,6 +75,7 @@ public class UserDAO {
/**
/**
* Returns a User object for given userId
* Returns a User object for given userId
*
* @param userId userId as int
* @param userId userId as int
* @return requested user object if found, null if not found
* @return requested user object if found, null if not found
*/
*/
...
@@ -97,6 +100,7 @@ public class UserDAO {
...
@@ -97,6 +100,7 @@ public class UserDAO {
/**
/**
* Helping method to get a User from a ResultSet
* Helping method to get a User from a ResultSet
*
* @param resultSet ResultSet with the user
* @param resultSet ResultSet with the user
* @return User object, or null if unsuccessful
* @return User object, or null if unsuccessful
*/
*/
...
@@ -120,6 +124,7 @@ public class UserDAO {
...
@@ -120,6 +124,7 @@ public class UserDAO {
/**
/**
* Adds a new user to database with default ID
* Adds a new user to database with default ID
*
* @param user User object
* @param user User object
* @return new User or already registered user
* @return new User or already registered user
*/
*/
...
@@ -181,24 +186,52 @@ public class UserDAO {
...
@@ -181,24 +186,52 @@ public class UserDAO {
/**
/**
* Generates a salt, for hashing
* Generates a salt, for hashing
*
* @return a random salt
* @return a random salt
*/
*/
public
byte
[]
generateSalt
()
{
public
byte
[]
generateSalt
()
{
return
null
;
SecureRandom
random
=
new
SecureRandom
();
byte
[]
saltArray
=
new
byte
[
16
];
random
.
nextBytes
(
saltArray
);
return
saltArray
;
}
}
/**
/**
* Method to hash a password with salt
* Method to hash a password with salt
*
* @param password password to be hashed
* @param password password to be hashed
* @param salt salt to use when hashing
* @param salt salt to use when hashing
* @return hashedPassword, null if unsuccessful
* @return hashedPassword, null if unsuccessful
*/
*/
public
String
hashPassword
(
String
password
,
byte
[]
salt
)
{
public
String
hashPassword
(
String
password
,
byte
[]
salt
)
{
try
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"SHA-512"
);
md
.
update
(
password
.
getBytes
());
byte
[]
bytes
=
md
.
digest
();
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
bytes
.
length
;
i
++)
{
sb
.
append
(
Integer
.
toString
((
bytes
[
i
]
&
0xff
)
+
0x100
));
}
String
hashedPassword
=
sb
.
toString
();
StringBuilder
hb
=
new
StringBuilder
();
for
(
byte
b
:
salt
)
{
hb
.
append
(
String
.
format
(
"%02x"
,
b
));
}
String
salted
=
hb
.
toString
();
System
.
out
.
println
(
salted
);
return
hashedPassword
+
"|"
+
salted
;
}
catch
(
NoSuchAlgorithmException
e
){
e
.
printStackTrace
();
}
return
null
;
return
null
;
}
}
/**
/**
* Edits the users username or password
* Edits the users username or password
*
* @param userId userId as int
* @param userId userId as int
* @param username Username as String
* @param username Username as String
* @param password password as String, if null it should not be updated
* @param password password as String, if null it should not be updated
...
...
This diff is collapsed.
Click to expand it.
src/test/java/UserDAOTest.java
+
8
−
1
View file @
2a7904da
...
@@ -9,10 +9,12 @@ import org.junit.Before;
...
@@ -9,10 +9,12 @@ import org.junit.Before;
import
org.junit.Test
;
import
org.junit.Test
;
import
javax.ws.rs.core.Application
;
import
javax.ws.rs.core.Application
;
import
java.security.SecureRandom
;
import
java.sql.Connection
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.sql.Statement
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
static
org
.
junit
.
Assert
.*;
import
static
org
.
junit
.
Assert
.*;
...
@@ -194,4 +196,9 @@ public class UserDAOTest extends JerseyTest {
...
@@ -194,4 +196,9 @@ public class UserDAOTest extends JerseyTest {
assertEquals
(
expectedUsername
,
actualUsername
);
assertEquals
(
expectedUsername
,
actualUsername
);
assertNotEquals
(
beforeNewUser
,
afterNewUser
);
assertNotEquals
(
beforeNewUser
,
afterNewUser
);
}
}
@Test
public
void
testSaltPassword
(){
byte
[]
salt
=
userDAO
.
generateSalt
();
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment