Wenn Ihr im Netz nach Beispielen für Kryptographie sucht werdet Ihr häufiger den Namen „Bouncy Castle“ oder die Kurzform „BC“ finden.
Was ist Bouncy Castle und wofür wird es gebraucht ? Bouncy Castle ist ein Kryptographie Provider und enthält sehr viele Funktionen, die in „normalen“ Java-Versionen nicht vorhanden sind. So gibt es viele (exotische) Kryptographie-Funktionen, die nur dort zu finden sind und deren Nachbau sehr viel Zeit verschlingt. Es dürfte vielfach deutlich einfacher sein, diese (externe) Java-Bibliothek in das Java-Programm einzubinden und dann zu nutzen.
Woher bekomme ich Bouncy Castle ? Die offizielle Webseite von Bouncy Castle ist http://www.bouncycastle.org und die Bibliotheken könnt Ihr auf der Seite http://www.bouncycastle.org/latest_releases.html herunterladen.
Welche Version lade ich herunter ? Auf der Webseite sind sehr viele unterschiedliche Versionen zu finden; für die auf dieser Webseite genutzten Funktionen nutzt Ihr bitte unter „Provider“ diese Version (Stand 29.10.2018): bcprov-jdk15on-160.jar.
Wohin kopiere ich die jar-Bibliothek ? Bitte kopiert die Datei an einen Ort, auf den Ihr mit Eurer Entwicklungsumgebung (z.B. Eclipse) Zugriff habt, z.B. einem Verzeichnis in Eurem Java-Workspace.
Wie binde ich die Bibliothek in Java ein ? Da ich mit Eclipse meine Java-Programme entwickle kann ich Euch nur dafür die Beschreibung liefern, hier die Schritt für Schritt Anleitung.
Schritt 1: Ihr klickt mit der rechten Maustaste im Paket-Explorer auf Euer Java-Paket (hier „JavaCrypto“) und wählt ganz unten „Eigenschaften“.
Schritt 2: Links im Fenster wählt Ihr „Java Erstellungspfad“ und im rechten Fenster den Reiter „Bibliotheken“ und dann klickt Ihr „Externe JARs hinzufügen“.
Schritt 3: Mittels des Datei Explorers wählt Ihr die heruntergeladene Bouncy Castle Jar- Datei aus und klickt auf öffnen:
Schritt 4: Im Fenster ganz unten „Anwenden und Schließen“ anklicken – fertig.
Nun schaut Euch das nachfolgende Beispiel an und Ihr könnt die zusätzlichen Funktionen von Bouncy Castle nutzen.
Kann ich Bouncy Castle nach den obigen Schritten nutzen ? Hier gebe ich Euch ein lächelndes „Jein“, denn die obigen Schritte sorgen für eine dynamische (also nicht eine feste) Einbindung. Auf der Bouncy Castle Seite ist die feste Einrichtung beschrieben, ich nutze lieber die fallweise Einbindung, die ich Euch nun beschreibe. Damit Euer Java Programm Bouncy Castle nutzen kann ist eine zusätzliche Zeile Programmcode notwendig, welche Ihr möglichst ganz zu Anfang Eures Programms platziert, also am besten direkt nach dem Start der „main“-Routine. Die zusätzliche Programmzeile lautet:
Security.addProvider(new BouncyCastleProvider());
und bei der Nutzung von Eclipse wird automatisch im „Import-Bereich“ die Zeile
import org.bouncycastle.jce.provider.BouncyCastleProvider;
hinzugefügt.
Im folgenden Beispiel A06 Kryptographie Provider inklusive BC findet Ihr beide Programmzeilen in den Zeilen 24 und 33:
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 |
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): 13.11.2018 * Funktion: Auflistung aller Kryptographie-Provider in Java * Function: output of all installed/available cryptography provider in Java * * 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.Provider; import java.security.Security; import org.bouncycastle.jce.provider.BouncyCastleProvider; public class A06_CryptoProviderBc { public static void main(String[] args) { System.out.println("A06 Auflistung aller Kryptographie-Provider inklusive Bouncy Castle"); // add at runtime the Bouncy Castle Provider // the provider is available only for this application Security.addProvider(new BouncyCastleProvider()); // source https://stackoverflow.com/questions/3683302/how-to-find-out-what-algorithm-encryption-are-supported-by-my-jvm/3683915#3683915 for (Provider provider : Security.getProviders()) { System.out.println("Provider: " + provider.getName() + " version: " + provider.getVersion()); } } } |
Die Konsolenausgabe zeigt in der letzten Zeile den (nun vorhandenen) Bouncy Castle Provider:
1 2 3 4 5 6 7 8 9 10 11 12 |
A06 Auflistung aller Kryptographie-Provider inklusive Bouncy Castle Provider: SUN version: 1.8 Provider: SunRsaSign version: 1.8 Provider: SunEC version: 1.8 Provider: SunJSSE version: 1.8 Provider: SunJCE version: 1.8 Provider: SunJGSS version: 1.8 Provider: SunSASL version: 1.8 Provider: XMLDSig version: 1.8 Provider: SunPCSC version: 1.8 Provider: SunMSCAPI version: 1.8 Provider: BC version: 1.6 |
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