Bevor Ihr die Known Answer Tests für den Bereich „Block Cipher“ bei Euch testet, solltet Ihr sicher sein, das Eure Java-Umgebung die verwendeten Algorithmen zur Benutzung bereitstellt. Das nachfolgende Programm listet Euch alle Cipher Algorithmen auf, der entsprechende Filter lautet übrigens „Cipher“.
Für die Known Answer Tests benötigt Ihr diese Algorithmen: AES-ECB, AES-CBC, AES-OFB und AES-CFB, jeweils mit den Schlüssellängen 128, 192 und 256 Bit.
Hier der Quellcode und die Konsolenausgabe:
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 |
/* * Herkunft/Origin: http://java-crypto.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 11.0.6 x64 * verwendete IDE/used IDE: intelliJ IDEA 2019.3.4 * Datum/Date (dd.mm.jjjj): 19.05.2020 * Funktion: listet alle verfuegbaren Cipher (Verschluesselungsverfahren) auf * Function: list all available cipher methods * Beschreibung in / Description in * http://java-crypto.bplaced.net/block-cipher-algorithms/ * * Sicherheitshinweis/Security notice * Die Programmroutinen dienen nur der Darstellung und haben keinen Anspruch auf eine korrekte Funktion, * insbesondere mit Blick auf die Sicherheit ! * Pruefen 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.Provider; import java.security.Security; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.TreeSet; public class List_Cipher { public static void main(String[] args) { System.out.println("Anzeige aller verfügbaren Cipher in Java"); System.out.println("\nverwendete Java version: " + Runtime.version() + " am " + getActualDate() + "\n"); TreeSet<String> ciphers = new TreeSet<>(); for (Provider provider : Security.getProviders()) for (Provider.Service service : provider.getServices()) if (service.getType().equals("Cipher")) ciphers.add(service.getAlgorithm()); for (String cipher : ciphers) System.out.println(cipher); } private static String getActualDate() { // provides the actual date and time in this format dd-MM-yyyy_HH-mm-ss e.g. 16-03-2020_10-27-15 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"); LocalDateTime today = LocalDateTime.now(); return formatter.format(today); } } |
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 |
Anzeige aller verfügbaren Cipher in Java verwendete Java version: 11.0.6+8-b520.43 am 19.05.2020 11:21:44 AES AESWrap AESWrap_128 AESWrap_192 AESWrap_256 AES_128/CBC/NoPadding AES_128/CFB/NoPadding AES_128/ECB/NoPadding AES_128/GCM/NoPadding AES_128/OFB/NoPadding AES_192/CBC/NoPadding AES_192/CFB/NoPadding AES_192/ECB/NoPadding AES_192/GCM/NoPadding AES_192/OFB/NoPadding AES_256/CBC/NoPadding AES_256/CFB/NoPadding AES_256/ECB/NoPadding AES_256/GCM/NoPadding AES_256/OFB/NoPadding ARCFOUR Blowfish ChaCha20 ChaCha20-Poly1305 DES DESede DESedeWrap PBEWithHmacSHA1AndAES_128 PBEWithHmacSHA1AndAES_256 PBEWithHmacSHA224AndAES_128 PBEWithHmacSHA224AndAES_256 PBEWithHmacSHA256AndAES_128 PBEWithHmacSHA256AndAES_256 PBEWithHmacSHA384AndAES_128 PBEWithHmacSHA384AndAES_256 PBEWithHmacSHA512AndAES_128 PBEWithHmacSHA512AndAES_256 PBEWithMD5AndDES PBEWithMD5AndTripleDES PBEWithSHA1AndDESede PBEWithSHA1AndRC2_128 PBEWithSHA1AndRC2_40 PBEWithSHA1AndRC4_128 PBEWithSHA1AndRC4_40 RC2 RSA |
Alle Quellcodes und die dazu gehörenden Testdateien zu den Known Answer Tests findet Ihr zum Download in meinem GitHub-Repository Known_Answer_Tests, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/Known_Answer_Tests. Alle Programme sind unter Java 11 lauffähig (vermutlich auch unter Java 8) und wurden mit intelliJ IDEA entwickelt, welches für dieses Programm aber nicht notwendig ist.
Noch ein Wort zum Thema „Lizenz“: Die von mir erstellten Beispiele stehen unter der „Unlicense“-Lizenz.
Letzte Bearbeitung: 19.05.2020