Browse Source

Alle tests grün

featureCrypto
Christian Baltzer 5 years ago
parent
commit
1ce94fc8ba
  1. 41
      src/main/java/com/ugsbo/Crypto/Payload.java
  2. 42
      src/test/java/com/ugsbo/Crypto/Crypt.java
  3. 30
      src/test/java/com/ugsbo/Crypto/DeCrypt.java

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

@ -15,11 +15,11 @@ public class Payload {
String offen; String offen;
String verschlüsselt; String verschlüsselt;
SecretKeySpec password; SecretKeySpec password;
public Payload() { public Payload() {
offen = ""; offen = "";
verschlüsselt = ""; verschlüsselt = "";
try { try {
this.setPassword(""); this.setPassword("");
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
@ -30,8 +30,8 @@ public class Payload {
e.printStackTrace(); e.printStackTrace();
} }
} }
public String getOffen() { public String getOffen() {
return offen; return offen;
} }
@ -54,33 +54,34 @@ public class Payload {
public void setPassword(String password) throws GeneralSecurityException, UnsupportedEncodingException {
public void setPassword(String password)
throws GeneralSecurityException, UnsupportedEncodingException {
byte[] key = (password).getBytes("UTF-8"); 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");
// 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 { public void verschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
Cipher cipher = Cipher.getInstance("AES"); Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, password); cipher.init(Cipher.ENCRYPT_MODE, password);
byte[] encrypted = cipher.doFinal(offen.getBytes()); byte[] encrypted = cipher.doFinal(offen.getBytes());
verschlüsselt = Base64.getEncoder().encodeToString(encrypted); verschlüsselt = Base64.getEncoder().encodeToString(encrypted);
} }
public void entschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException { public void entschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
byte[] text = Base64.getDecoder().decode(verschlüsselt); byte[] text = Base64.getDecoder().decode(verschlüsselt);
Cipher cipher = Cipher.getInstance("AES"); Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, password); cipher.init(Cipher.DECRYPT_MODE, password);
byte[] cipherData2 = cipher.doFinal(text); byte[] cipherData2 = cipher.doFinal(text);

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

@ -13,9 +13,9 @@ import org.junit.Test;
public class Crypt { public class Crypt {
private Payload workingobjekt; private Payload workingobjekt;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
workingobjekt = new Payload(); workingobjekt = new Payload();
@ -23,33 +23,33 @@ public class Crypt {
@Test @Test
public void offenIstAnders() { public void offenIstAnders() {
String eingabe = "TestText";
String eingabe = "TestText";
String ergebnis; String ergebnis;
String password = ""; String password = "";
try { try {
workingobjekt.setOffen(eingabe);
workingobjekt.setPassword(password);
workingobjekt.entschlüsseln();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
workingobjekt.setOffen(eingabe);
workingobjekt.setPassword(password);
workingobjekt.entschlüsseln();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ergebnis = workingobjekt.getVerschlüsselt(); ergebnis = workingobjekt.getVerschlüsselt();
assertNotEquals("unterschidliche Texte",eingabe,ergebnis);
assertNotEquals("unterschidliche Texte", eingabe, ergebnis);
} }
@Test @Test
public void verUndEntschlüsseln() { public void verUndEntschlüsseln() {
String password = "Test"; String password = "Test";
String eingabe = "TestText"; String eingabe = "TestText";
String ergebnis; String ergebnis;
try { try {
workingobjekt.setOffen(eingabe); workingobjekt.setOffen(eingabe);
workingobjekt.setPassword(password); workingobjekt.setPassword(password);
@ -59,8 +59,8 @@ public class Crypt {
e.printStackTrace(); e.printStackTrace();
} }
ergebnis = workingobjekt.getOffen(); ergebnis = workingobjekt.getOffen();
assertEquals("das entschlüsselte Test Wort",ergebnis,eingabe);
assertEquals("das entschlüsselte Test Wort", ergebnis, eingabe);
} }
} }

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

@ -10,7 +10,7 @@ import org.junit.Test;
public class DeCrypt { public class DeCrypt {
private Payload workingobjekt; private Payload workingobjekt;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
workingobjekt = new Payload(); workingobjekt = new Payload();
@ -18,33 +18,33 @@ public class DeCrypt {
@Test @Test
public void verschlüsseltIstAnders() { public void verschlüsseltIstAnders() {
String eingabe = "TestText";
String eingabe = "TestText";
String password = "Test"; String password = "Test";
String ergebnis; String ergebnis;
try { try {
workingobjekt.setVerschlüsselt(eingabe);
workingobjekt.setPassword(password);
workingobjekt.setVerschlüsselt(eingabe);
workingobjekt.setPassword(password);
workingobjekt.entschlüsseln(); workingobjekt.entschlüsseln();
} catch (GeneralSecurityException e) { } catch (GeneralSecurityException e) {
e.printStackTrace(); e.printStackTrace();
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
ergebnis = workingobjekt.getOffen(); ergebnis = workingobjekt.getOffen();
assertNotEquals("unterschidliche Texte",eingabe,ergebnis);
assertNotEquals("unterschidliche Texte", eingabe, ergebnis);
} }
@Test @Test
public void entUndVerschlüsseln() { public void entUndVerschlüsseln() {
String password = "Test"; String password = "Test";
String eingabe = "TestText"; String eingabe = "TestText";
String ergebnis; String ergebnis;
try { try {
workingobjekt.setOffen(eingabe); workingobjekt.setOffen(eingabe);
workingobjekt.setPassword(password); workingobjekt.setPassword(password);
@ -53,10 +53,10 @@ public class DeCrypt {
} catch (GeneralSecurityException | UnsupportedEncodingException e) { } catch (GeneralSecurityException | UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
ergebnis = workingobjekt.getOffen(); ergebnis = workingobjekt.getOffen();
assertEquals("das entschlüsselte Test Wort",ergebnis,eingabe);
assertEquals("das entschlüsselte Test Wort", ergebnis, eingabe);
} }
} }
Loading…
Cancel
Save