Die Nutzung von Kryptographie hat unter Anderem den Sinn, Daten in verschlüsselter Form weiterzugeben. Üblicherweise werden dabei sehr häufig Systeme verwendet, welche Textnachrichten übertragen (z.B. eine Mail oder SMS). Die Weitergabe eines Byte Arrays vom Sender zum Empfänger ist mühevoll und fehleranfällig, daher wird sehr häufig das Byte Array vor dem Versand in einen String umgewandelt, der im Base64-Format kodiert ist.
Seit Java ist die Kodierung und spätere Dekodierung von Base64-Strings mit je einer Programmzeile erledigt. Hier zeige ich Euch in meinem Beispiel, wie aus einem String zuerst ein Byte Array wird und dieses dann in einen Base64-kodierten String gewandelt wird. Beim Empfänger wird der Base64-String wieder zurück in ein Byte Array dekodiert und wie dann daraus ein String entsteht.
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 |
package net.bplaced.javacrypto.general; /* * 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 * Datum/Date (dd.mm.jjjj): 15.11.2018 * Funktion: kodiert ein Byte Array in einen Base64-formatierten String und wieder zurück * Function: converts a Byte Array into a Base64-formatted String and reverse * * 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 ! */ import java.util.Base64; // notwendig fuer die base64-kodierung import javax.xml.bind.DatatypeConverter; // notwendig fuer den DatatypeConverter public class A09_Base64_Kodierung { public static void main(String[] args) throws Exception { System.out.println("A09 Base64-Kodierung"); // unsere Variablen String dataString = "1234567890"; byte[] dataToBase64Byte = null; // der Inhalt wird später Base64-kodiert String dataBase64String = ""; // in den String kommen die Base64-kodierten Daten byte[] dataFromBase64Byte = null; // dieses Byte Array nimmt später die Base64-dekodierten Daten auf String dataFromBase64String = ""; // in den String kommen die Base64-dekodierten Daten // die variable wird mit daten gefuellt dataToBase64Byte = dataString.getBytes("UTF-8"); // hier erfolgt die base64-kodierung, d.h. das byte array wird in einen string kodiert dataBase64String = Base64.getEncoder().encodeToString(dataToBase64Byte); // hier erfolgt die base64-dekodierung, d.h. der string wird in ein byte array zurueck kodiert dataFromBase64Byte = Base64.getDecoder().decode(dataBase64String); // umwandlung vom byte array in einen string dataFromBase64String = new String(dataFromBase64Byte, "utf-8"); System.out.println(""); System.out.println("dataString (String-Format) :" + dataString); System.out.println("dataToBase64Byte (Hex-Format) :" + DatatypeConverter.printHexBinary(dataToBase64Byte)); System.out.println("data64String (String-Format) :" + dataBase64String); System.out.println("dataFromBase64Byte (Hex-Format) :" + DatatypeConverter.printHexBinary(dataFromBase64Byte)); System.out.println("dataFromBase64Byte (String-Format):" + dataFromBase64String); } } |
Die Konsole zeigt Euch das Ergebnis der Umwandlungen:
1 2 3 4 5 6 7 |
A09 Base64-Kodierung dataString (String-Format) :1234567890 dataToBase64Byte (Hex-Format) :31323334353637383930 data64String (String-Format) :MTIzNDU2Nzg5MA== dataFromBase64Byte (Hex-Format) :31323334353637383930 dataFromBase64Byte (String-Format):1234567890 |
Den Quellcode zum Programm findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/A-Allgemeine-Programme. Dort findet Ihr auch die Versionen für Java 11.
Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.
Letzte Aktualisierung: 26.01.2019