Bevor Ihr die Known Answer Tests für den Bereich „Secure Hash“ bei Euch testet, solltet Ihr sicher sein, das Eure Java-Umgebung die verwendeten Algorithmen zur Benutzung bereitstellt. Das nachfolgende Programm listet Euch alle Secure Hash („SHA“) Algorithmen auf, der entsprechende Filter lautet übrigens „MessageDigests“.
Für die Known Answer Tests benötigt Ihr diese Algorithmen: SHA, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA3-224, SHA3-256, SHA3-384, SHA3-512.
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): 11.05.2020 * Funktion: listet alle verfuegbaren Message Digests (Hashverfahren) auf * Function: list all available Message Digest (Hash-) methods * Beschreibung in / Description in * http://java-crypto.bplaced.net/secure-hash-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_MessageDigests { public static void main(String[] args) { System.out.println("Anzeige aller verfügbaren Message Digests (Secure Hash) in Java"); System.out.println("\nverwendete Java version: " + Runtime.version() + " am " + getActualDate() + "\n"); TreeSet<String> messageDigests = new TreeSet<>(); for (Provider provider : Security.getProviders()) for (Provider.Service service : provider.getServices()) if (service.getType().equals("MessageDigest")) messageDigests.add(service.getAlgorithm()); for (String messageDigest : messageDigests) System.out.println(messageDigest); } 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 |
Anzeige aller verfügbaren Message Digests (Secure Hash) in Java verwendete Java version: 11.0.6+8-b520.43 am 11.05.2020 19:01:36 MD2 MD5 SHA SHA-224 SHA-256 SHA-384 SHA-512 SHA-512/224 SHA-512/256 SHA3-224 SHA3-256 SHA3-384 SHA3-512 |
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: 11.05.2020