Ich habe in H Tink Stringverschlüsselung mit PBE und GUI eine einfache Anwendung für die Klasse TinkPbe.java demonstriert. Nachfolgend zeige ich die Nutzung der Klasse in einem Konsolen-Programm. Für weitere Erläuterungen verweise ich auf die obige GUI-Variante.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
package tinkPbe; /* * Herkunft/Origin: http://javacrypto.bplaced.net/ * Programmierer/Programmer: Michael Fehr * Copyright/Copyright: frei verwendbares Programm (Public Domain) * Copyright: This is free and unencumbered software released into the public domain. * Lizenttext/Licence: <http://unlicense.org> * getestet mit/tested with: Java Runtime Environment 8 Update 191 x64 * getestet mit/tested with: Java Runtime Environment 11.0.1 x64 * Datum/Date (dd.mm.jjjj): 20.11.2019 * Funktion: verschlüsselt und entschlüsselt einen Text mittels Google Tink * im Modus AES GCM 256 Bit. Der Schlüssel wird mittels PBE * (Password based encryption) erzeugt. * Function: encrypts and decrypts a text message with Google Tink. * Used Mode is AES GCM 256 Bit. The key is generated with PBE * (Password based encryption). * * Sicherheitshinweis/Security notice * Die Programmroutinen dienen nur der Darstellung und haben keinen Anspruch auf eine korrekte Funktion, * insbesondere mit Blick auf die Sicherheit ! * Prüfen Sie die Sicherheit bevor das Programm in der echten Welt eingesetzt wird. * The program routines just show the function but please be aware of the security part - * check yourself before using in the real world ! * * Das Programm benötigt die nachfolgenden Bibliotheken (siehe Github Archiv): * The programm uses these external libraries (see Github Archive): * jar-Datei/-File: tink-1.2.2.jar * https://mvnrepository.com/artifact/com.google.crypto.tink/tink/1.2.2 * jar-Datei/-File: protobuf-java-3.10.0.jar * https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java/3.10.0 * jar-Datei/-File: json-20190722.jar * https://mvnrepository.com/artifact/org.json/json/20190722 * */ import java.io.IOException; import java.security.GeneralSecurityException; import com.google.crypto.tink.aead.AeadConfig; public class H_TinkPbeConsole { public static void main(String[] args) throws GeneralSecurityException, IOException { System.out.println("Tink String Encryption with PBE"); AeadConfig.register(); // tink initialisation TinkPbe tpbe = new TinkPbe(); // tink pbe initialisation String plaintextString = "Das ist die zu verschlüsselnde Nachricht. This is the message that needs to get encrypted."; byte[] plaintextByte = plaintextString.getBytes("utf-8"); // das passwort wird z.b. von einem jPassword-Feld übergeben char[] passwordChar = "secret Password".toCharArray(); String ciphertextString = tpbe.encrypt(passwordChar, plaintextString); String decryptedtextString = tpbe.decrypt(passwordChar, ciphertextString); // ausgabe der variablen System.out.println("\nAusgabe der Variablen / Data Output"); System.out.println("plaintextString :" + plaintextString); System.out.println("plaintextByte (hex) :" + printHexBinary(plaintextByte)); System.out.println("= = = Verschlüsselung / Encryption = = ="); System.out.println("ciphertextString :" + ciphertextString); System.out.println("= = = Entschlüsselung / Decryption = = ="); System.out.println("decryptedtextString :" + decryptedtextString); } public static String printHexBinary(byte[] bytes) { final char[] hexArray = "0123456789ABCDEF".toCharArray(); char[] hexChars = new char[bytes.length * 2]; for (int j = 0; j < bytes.length; j++) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); } } |
Den Quellcode der TinkPbe.java zeige ich Euch auf der Seite H Tink Stringverschlüsselung mit PBE und GUI.
Die Ausgabe auf der Konsole ist kurz und knackig (wenn Ihr die verschlüsselte Nachricht selber entschlüsseln wollt – das Passwort lautete 12345678:
1 2 3 4 5 6 7 8 9 |
Tink String Encryption with PBE Ausgabe der Variablen / Data Output plaintextString :Das ist die zu verschlüsselnde Nachricht. This is the message that needs to get encrypted. plaintextByte (hex) :4461732069737420646965207A75207665727363686CC3BC7373656C6E6465204E61636872696368742E205468697320697320746865206D6573736167652074686174206E6565647320746F2067657420656E637279707465642E = = = Verschlüsselung / Encryption = = = ciphertextString :AQAS1oea4GXxfSgydN/Yg0tJhOkyTCyp04jrMe2aEpaCeniahYVqRTznOgOnVwnROdJLSlR4iUIsgzDzd2dPIpBclcukfkBKoEof+LoLkRaoaS2/3eNlTUfnRJzK3QqzXYpW6/64yvHQ/r+s1thTfKaZ0CfYwDoDG6/8VQ== = = = Entschlüsselung / Decryption = = = decryptedtextString :Das ist die zu verschlüsselnde Nachricht. This is the message that needs to get encrypted. |
Alle Quellcodes zu Google Tink findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/H-Google-Tink. Alle Programme sind sowohl unter Java 8 als auch unter Java 11 lauffähig.
Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.
Letzte Aktualisierung: 20.11.2019