Browse Source

Merge branch 'featureCrypto' into pullrequest

pullrequest
Christian Baltzer 5 years ago
parent
commit
6e1deadf39
  1. 22
      src/main/java/com/ugsbo/Crypto/Crypto_Logic.java
  2. 92
      src/main/java/com/ugsbo/Crypto/Payload.java
  3. 66
      src/test/java/com/ugsbo/Crypto/Crypt.java
  4. 62
      src/test/java/com/ugsbo/Crypto/DeCrypt.java

22
src/main/java/com/ugsbo/Crypto/Crypto_Logic.java

@ -0,0 +1,22 @@
package com.ugsbo.Crypto;
import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
public class Crypto_Logic {
public static void main(String[] args) throws UnsupportedEncodingException, GeneralSecurityException {
// TODO Auto-generated method stub
String test = "Hallo, mein Name ist Christian";
Payload temp = new Payload();
temp.setOffen(test);
temp.setPassword("geheim");
temp.verschlüsseln();
System.out.println(temp.getVerschlüsselt());
temp.entschlüsseln();
System.out.println(temp.getOffen());
}
}

92
src/main/java/com/ugsbo/Crypto/Payload.java

@ -0,0 +1,92 @@
package com.ugsbo.Crypto;
import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class Payload {
String offen;
String verschlüsselt;
SecretKeySpec password;
public Payload() {
offen = "";
verschlüsselt = "";
try {
this.setPassword("");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getOffen() {
return offen;
}
public String getVerschlüsselt() {
return verschlüsselt;
}
public void setOffen(String offen) {
this.offen = offen;
}
public void setVerschlüsselt(String verschlüsselt) {
this.verschlüsselt = verschlüsselt;
}
public void setPassword(String password)
throws GeneralSecurityException, UnsupportedEncodingException {
byte[] key = (password).getBytes("UTF-8");
// aus dem Array einen Hash-Wert erzeugen mit MD5 oder SHA
MessageDigest sha = MessageDigest.getInstance("SHA-256");
key = sha.digest(key);
// nur die ersten 128 bit nutzen
key = Arrays.copyOf(key, 16);
// der fertige Schluessel
this.password = new SecretKeySpec(key, "AES");
}
public void verschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, password);
byte[] encrypted = cipher.doFinal(offen.getBytes());
verschlüsselt = Base64.getEncoder().encodeToString(encrypted);
}
public void entschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
byte[] text = Base64.getDecoder().decode(verschlüsselt);
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, password);
byte[] cipherData2 = cipher.doFinal(text);
offen = new String(cipherData2);
}
}

66
src/test/java/com/ugsbo/Crypto/Crypt.java

@ -0,0 +1,66 @@
/**
*
*/
package com.ugsbo.Crypto;
import com.ugsbo.Crypto.*;
import static org.junit.Assert.*;
import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.security.NoSuchAlgorithmException;
import org.junit.Before;
import org.junit.Test;
public class Crypt {
private Payload workingobjekt;
@Before
public void setUp() throws Exception {
workingobjekt = new Payload();
}
@Test
public void offenIstAnders() {
String eingabe = "TestText";
String ergebnis;
String password = "";
try {
workingobjekt.setOffen(eingabe);
workingobjekt.setPassword(password);
workingobjekt.entschlüsseln();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ergebnis = workingobjekt.getVerschlüsselt();
assertNotEquals("unterschidliche Texte", eingabe, ergebnis);
}
@Test
public void verUndEntschlüsseln() {
String password = "Test";
String eingabe = "TestText";
String ergebnis;
try {
workingobjekt.setOffen(eingabe);
workingobjekt.setPassword(password);
workingobjekt.verschlüsseln();
workingobjekt.entschlüsseln();
} catch (GeneralSecurityException | UnsupportedEncodingException e) {
e.printStackTrace();
}
ergebnis = workingobjekt.getOffen();
assertEquals("das entschlüsselte Test Wort", ergebnis, eingabe);
}
}

62
src/test/java/com/ugsbo/Crypto/DeCrypt.java

@ -0,0 +1,62 @@
package com.ugsbo.Crypto;
import static org.junit.Assert.*;
import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import com.ugsbo.Crypto.*;
import org.junit.Before;
import org.junit.Test;
public class DeCrypt {
private Payload workingobjekt;
@Before
public void setUp() throws Exception {
workingobjekt = new Payload();
}
@Test
public void verschlüsseltIstAnders() {
String eingabe = "TestText";
String password = "Test";
String ergebnis;
try {
workingobjekt.setVerschlüsselt(eingabe);
workingobjekt.setPassword(password);
workingobjekt.entschlüsseln();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ergebnis = workingobjekt.getOffen();
assertNotEquals("unterschidliche Texte", eingabe, ergebnis);
}
@Test
public void entUndVerschlüsseln() {
String password = "Test";
String eingabe = "TestText";
String ergebnis;
try {
workingobjekt.setOffen(eingabe);
workingobjekt.setPassword(password);
workingobjekt.verschlüsseln();
workingobjekt.entschlüsseln();
} catch (GeneralSecurityException | UnsupportedEncodingException e) {
e.printStackTrace();
}
ergebnis = workingobjekt.getOffen();
assertEquals("das entschlüsselte Test Wort", ergebnis, eingabe);
}
}
Loading…
Cancel
Save