Ultra Geile Studenten Benutzer Oberfläche (UGSBO)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.1 KiB

5 years ago
5 years ago
5 years ago
5 years ago
  1. package com.ugsbo.Crypto;
  2. import java.io.UnsupportedEncodingException;
  3. import java.security.GeneralSecurityException;
  4. import java.security.MessageDigest;
  5. import java.security.NoSuchAlgorithmException;
  6. import java.util.Arrays;
  7. import java.util.Base64;
  8. import javax.crypto.*;
  9. import javax.crypto.spec.SecretKeySpec;
  10. public class Payload {
  11. String offen;
  12. String verschlüsselt;
  13. SecretKeySpec password;
  14. public Payload() {
  15. offen = "";
  16. verschlüsselt = "";
  17. try {
  18. this.setPassword("");
  19. } catch (UnsupportedEncodingException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. } catch (GeneralSecurityException e) {
  23. // TODO Auto-generated catch block
  24. e.printStackTrace();
  25. }
  26. }
  27. public String getOffen() {
  28. return offen;
  29. }
  30. public String getVerschlüsselt() {
  31. return verschlüsselt;
  32. }
  33. public void setOffen(String offen) {
  34. this.offen = offen;
  35. }
  36. public void setVerschlüsselt(String verschlüsselt) {
  37. this.verschlüsselt = verschlüsselt;
  38. }
  39. public void setPassword(String password)
  40. throws GeneralSecurityException, UnsupportedEncodingException {
  41. byte[] key = (password).getBytes("UTF-8");
  42. // aus dem Array einen Hash-Wert erzeugen mit MD5 oder SHA
  43. MessageDigest sha = MessageDigest.getInstance("SHA-256");
  44. key = sha.digest(key);
  45. // nur die ersten 128 bit nutzen
  46. key = Arrays.copyOf(key, 16);
  47. // der fertige Schluessel
  48. this.password = new SecretKeySpec(key, "AES");
  49. }
  50. public void verschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
  51. Cipher cipher = Cipher.getInstance("AES");
  52. cipher.init(Cipher.ENCRYPT_MODE, password);
  53. byte[] encrypted = cipher.doFinal(offen.getBytes());
  54. verschlüsselt = Base64.getEncoder().encodeToString(encrypted);
  55. }
  56. public void entschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
  57. byte[] text = Base64.getDecoder().decode(verschlüsselt);
  58. Cipher cipher = Cipher.getInstance("AES");
  59. cipher.init(Cipher.DECRYPT_MODE, password);
  60. byte[] cipherData2 = cipher.doFinal(text);
  61. offen = new String(cipherData2);
  62. }
  63. }