Skip to content
Snippets Groups Projects
Commit fe4c1fb9 authored by Schlütter Yannik's avatar Schlütter Yannik
Browse files

Update: CryptoUtils.java (Nof differentiate between Files that can be...

Update: CryptoUtils.java (Nof differentiate between Files that can be encrypted multiple times, Files that can only be encrypted once and Files that have already been encrypted)
Update: CryptoUtilsTest.java (Added new UnitTests and a RepeatedTest more to come yet) #60
parent 64bd355c
No related branches found
No related tags found
4 merge requests!74V1,!73Initial commit,!71Merge DataBase into Development,!8Merge database branch into development branch
......@@ -15,9 +15,6 @@ import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CryptoUtils{
......@@ -27,15 +24,26 @@ public class CryptoUtils{
private static String key = "Peters Olivenöl";
private static String encrypted_as_word = "encrypted;";
private static boolean alreadyencrypted = false;
private static boolean multipleencryptions = false;
private static int encryptionreturn;
private static final Logger log = LogManager.getLogger(CryptoUtils.class);
public static void encrypt(File inputFile) throws CryptoException {
alreadyencrypted = check_if_file_already_encrypted(inputFile); //Yet to implement
if(alreadyencrypted == false){
public static int encrypt(File inputFile, boolean multipleencryptions) throws CryptoException {
alreadyencrypted = check_if_file_already_encrypted(inputFile);
if(multipleencryptions){
doCrypto(Cipher.ENCRYPT_MODE, key, inputFile);
log.info("This File can be encrypted multiple times");
return encryptionreturn = 0;
}
else if(!alreadyencrypted && !multipleencryptions){
doCrypto(Cipher.ENCRYPT_MODE, key, inputFile);
log.info("This File can only be encryptet once and this is now!");
return encryptionreturn = 1;
}else {
log.info("This file is already encrypted and doesnt need to be encrypted anymore! " + inputFile);
return encryptionreturn = 2;
}
}
......@@ -64,6 +72,7 @@ public class CryptoUtils{
FileOutputStream outputStream = new FileOutputStream(inputFile);
outputStream.write(outputBytes);//outputBytes
outputStream.close();
multipleencryptions = true;
}
inputStream.close();
......
......@@ -3,7 +3,9 @@ package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities;
//import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.CryptoException;
import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.CryptoException;
import org.junit.jupiter.api.Test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.*;
import java.io.*;
......@@ -13,18 +15,31 @@ public class CryptoUtilsTest {
private static File encryptiondecryptiontestFile = new File("src\\main\\resources\\database\\encryptiondecryptiontestFile.txt");
private static File encryptedtestFile = new File("src\\main\\resources\\database\\encrypted;encryptedtestFile.txt");
private static boolean alreadyencrypted;
private static int encryptionreturn;
private static String text="";
private static String[] parts;
private static String testtext = "Hier steht ein Testtext.";
private static boolean multipleencryptions = false;
private static final Logger log = LogManager.getLogger(CryptoUtilsTest.class);
@Test
void encrypt_decryptiontest() throws IOException {
String text="";
String[] parts;
String testtext = "Hier steht ein Testtext.";
@BeforeEach
void beforeEachTest(TestInfo testInfo) {
log.info(() -> String.format("About to execute [%s]",
testInfo.getDisplayName()));
}
@AfterEach
void afterEachTest(TestInfo testInfo) {
log.info(() -> String.format("Finished executing [%s]",
testInfo.getDisplayName()));
}
@Test
void encryptDecryptiontest() throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(encryptiondecryptiontestFile));
writer.write(testtext);
writer.close();
try {
CryptoUtils.encrypt(encryptiondecryptiontestFile);
CryptoUtils.encrypt(encryptiondecryptiontestFile, true);
parts = CryptoUtils.decrypt(encryptiondecryptiontestFile);
text = parts[0];
System.out.println(text);
......@@ -34,18 +49,54 @@ public class CryptoUtilsTest {
}
assertEquals(testtext,text);
}
@RepeatedTest(3)
void repeatedCheckFileEncryptingMultipleTimes() throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(encryptiondecryptiontestFile));
writer.write(testtext);
writer.close();
try {
encryptionreturn = CryptoUtils.encrypt(encryptiondecryptiontestFile, true);
parts = CryptoUtils.decrypt(encryptiondecryptiontestFile);
text = parts[0];
System.out.println(text);
} catch (CryptoException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
assertEquals(encryptionreturn, 0);
assertEquals(testtext,text); //Change
}
@Test
void checkFileEncryptingOnce() throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(encryptiondecryptiontestFile));
writer.write(testtext);
writer.close();
try {
encryptionreturn = CryptoUtils.encrypt(encryptiondecryptiontestFile, false);
parts = CryptoUtils.decrypt(encryptiondecryptiontestFile);
text = parts[0];
System.out.println(text);
} catch (CryptoException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
assertEquals(encryptionreturn, 1);
assertEquals(testtext,text); //Change
}
@Test
void check_if_file_already_encrypted(){
void checkIfFileAlreadyEncrypted(){
alreadyencrypted = CryptoUtils.check_if_file_already_encrypted(encryptedtestFile);
assertTrue(alreadyencrypted);
}
@Test
void check_if_file_not_yet_encrypted(){
void checkIfFileNotYetEncrypted(){
alreadyencrypted = CryptoUtils.check_if_file_already_encrypted(encryptiondecryptiontestFile);
assertFalse(alreadyencrypted);
}
@Test
void checkCryptoexception(){
//
void exceptionTestingFileNotFound() {
CryptoException exception = assertThrows(CryptoException.class, () ->
CryptoUtils.decrypt(new File("src/main/resources/database/thisFileShouldn'tExist")));
assertEquals("Error encrypting/decrypting file", exception.getMessage());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment