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.

91 lines
2.2 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) throws GeneralSecurityException, UnsupportedEncodingException {
  40. byte[] key = (password).getBytes("UTF-8");
  41. // aus dem Array einen Hash-Wert erzeugen mit MD5 oder SHA
  42. MessageDigest sha = MessageDigest.getInstance("SHA-256");
  43. key = sha.digest(key);
  44. // nur die ersten 128 bit nutzen
  45. key = Arrays.copyOf(key, 16);
  46. // der fertige Schluessel
  47. this.password = new SecretKeySpec(key, "AES");
  48. }
  49. public void verschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
  50. Cipher cipher = Cipher.getInstance("AES");
  51. cipher.init(Cipher.ENCRYPT_MODE, password);
  52. byte[] encrypted = cipher.doFinal(offen.getBytes());
  53. verschlüsselt = Base64.getEncoder().encodeToString(encrypted);
  54. }
  55. public void entschlüsseln() throws NoSuchAlgorithmException, GeneralSecurityException {
  56. byte[] text = Base64.getDecoder().decode(verschlüsselt);
  57. Cipher cipher = Cipher.getInstance("AES");
  58. cipher.init(Cipher.DECRYPT_MODE, password);
  59. byte[] cipherData2 = cipher.doFinal(text);
  60. offen = new String(cipherData2);
  61. }
  62. }