Ich hatte auf der Seite „A01 HelloWorld mit Java-Version“ schon auf die Wichtigkeit der Java-Version hingewiesen. In einem engen Zusammenhang damit steht auch die Nutzung aller Schlüssellängen in einem Java-Programm. Umgekehrt bedeutet es: ist die verwendete Java-Version „zu alt“ oder nicht speziell dafür freigeschaltet, stürzen unsere Programme sehr heftig ab und Ihr werdet mehr als frustiert sein.
Hinweis: im Beispiel A03b Prüfung auf unlimitierte Verschlüsselung findet Ihr eine „copy & paste“ Methode für den einfachen Einsatz in Eurem Programm.
Daher werden wir an dieser Stelle überprüfen, ob die eingesetzte Java-Version die notwendigen Berechtigungen besitzt. Startet einfach das nachfolgende Programm und schaut Euch die Ausgabe an:
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 |
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 181 x64 * Datum/Date (dd.mm.jjjj): 25.09.2018 * Funktion: ermittelt die maximale Kryptographie-Schlüssellänge * Function: output of the allowed cryptographic key-length * * 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.security.NoSuchAlgorithmException; import javax.crypto.Cipher; public class A03_UnlimitedCryptography { public static void main(String[] args) { System.out.println("A03 Ausgabe der erlaubten Kryptograpie-Schluessellaenge"); int allowedAesKeyLength = 0; try { allowedAesKeyLength = Cipher.getMaxAllowedKeyLength("AES"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } System.out.println("Die erlaubte Schluessellaenge fuer AES ist: " + allowedAesKeyLength); } } |
Solltet Ihr auf der Konsole diese Ausgabe finden, ist Eure Java-Version für Kryptographie umfangreich zu nutzen (gut !):
1 2 |
A03 Ausgabe der erlaubten Kryptograpie-Schluessellaenge Die erlaubte Schluessellaenge fuer AES ist: 2147483647 |
Der nachstehende Text bedeutet das Gegenteil, nämlich das die Schlüssellängen in Eurer Java-Version begrenzt sind – bei „AES“ z.B. auf 128 Bit lange Schlüssel – (schlecht !):
1 2 |
A03 Ausgabe der erlaubten Kryptograpie-Schluessellaenge Die erlaubte Schluessellaenge fuer AES ist: 128 |
Was könnt Ihr machen um die Begrenzung aufzuheben ? Die notwendigen Anleitungen findet Ihr im Internet unter den Suchbegriffen „java unlimited strength policy“ oder… Ihr macht ein Update Eurer Java-Version auf Hauptversion 8 und der Unterversion 191.
Noch ein Hinweis: entscheidend ist die Java-Version der Maschine, auf der Eurer Code ausgeführt wird, d.h. wenn Ihr die passende Version auf dem (Entwicklungs-) Rechner habt, aber der Einsatzrechner ist noch auf Java 7, kann es Probleme geben!
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: 25.09.2018