Alle auf dieser Webseite vorgestellten Programme wurden unter Java 8 entwickelt und getestet und können prinzipiell auch mit höheren Versionsnummern ausgeführt werden.
Leider hat Oracle in den letzten Jahren eine bei mir sehr beliebte Funktion zur Ausgabe eines Byte Arrays gelöscht (ich rede hier von der Methode DatatypeConverter.printHexBinary(byte[] data)). Wenn Ihr also eines meiner Beispiele mit einer höheren Java-Version testet, erhaltet Ihr sehr wahrscheinlich den Hinweis, dass der Import von „javax.xml.bind.DatatypeConverter“ nicht möglich ist.
Daher habe ich aus dem Sourcecode der Bibliothek die vier meistgenutzten Methoden herauskopiert und als Benutzermethoden dem Beispiel angehangen. Ihr braucht also nur die notwendige Methode in einen Sourcecode kopieren und den Methodenaufruf von „DatatypeConverter.printHexBinary“ in „printHexBinary“ abzuändern, dann funktionieren die Beispiele wieder.
Hier das Beispiel:
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 |
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 * getestet mit/tested with: Java Runtime Environment 11.0.1 x64 * Datum/Date (dd.mm.jjjj): 13.01.2019 * Funktion: gibt ein Byte Array mit DatatypeConverter bzw. eigener Methode aus * Function: returns a Byte Array with DatatypeConverter and own method * * 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.math.BigInteger; import javax.xml.bind.DatatypeConverter; // notwendig fuer den DatatypeConverter public class A10_Java11_Aenderungen { public static void main(String[] args) throws Exception { System.out.println("A10 Java 11 Änderungen\n"); byte[] dataByte = "1234567890".getBytes("utf-8"); System.out.println("dataByte Java 8:" + DatatypeConverter.printHexBinary(dataByte)); System.out.println("dataByte Java 11:" + printHexBinary(dataByte)); } // diese routinen in java 11 an stelle von datatypeconverter.xxx nutzen 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); } public static String printInteger(Integer val) { return val.toString(); } public static String printBigInteger(BigInteger val) { return val.toString(); } public static String printByte(byte val) { return String.valueOf(val); } } |
Die Konsolenausgabe ist kurz und knackig:
1 2 3 4 |
A10 Java 11 Änderungen dataByte Java 8:31323334353637383930 dataByte Java 11:31323334353637383930 |
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