<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Java_Cryptography_Extension</id>
	<title>Java Cryptography Extension - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Java_Cryptography_Extension"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Java_Cryptography_Extension&amp;action=history"/>
	<updated>2026-05-16T06:38:15Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Java_Cryptography_Extension&amp;diff=1852072&amp;oldid=prev</id>
		<title>imported&gt;Carolus requiescat: Die letzte Textänderung von 129.27.152.8 wurde verworfen und die Version 252781991 von OnionObserver wiederhergestellt. Keine Weblinks im Text</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Java_Cryptography_Extension&amp;diff=1852072&amp;oldid=prev"/>
		<updated>2025-05-01T20:40:31Z</updated>

		<summary type="html">&lt;p&gt;Die letzte Textänderung von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/129.27.152.8&quot; title=&quot;Spezial:Beiträge/129.27.152.8&quot;&gt;129.27.152.8&lt;/a&gt; wurde verworfen und die Version &lt;a href=&quot;/index.php/Spezial:Permanenter_Link/252781991&quot; title=&quot;Spezial:Permanenter Link/252781991&quot;&gt;252781991&lt;/a&gt; von OnionObserver wiederhergestellt. Keine Weblinks im Text&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Java Cryptography Extension&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;JCE&amp;#039;&amp;#039;&amp;#039;) ist eine [[Programmierschnittstelle|Schnittstelle]] der [[Programmiersprache]] [[Java (Programmiersprache)|Java]] und [[Framework]] für kryptographische Aufgaben wie [[Verschlüsselung]], Kommunikations-[[Authentifizierung]] und [[Schlüssel (Kryptologie)|Schlüssel]]&amp;lt;nowiki /&amp;gt;verwaltung. Seit dem [[Java Development Kit|JDK]] 1.4 ist sie Teil der [[Java Platform, Standard Edition]], davor war sie (ab JDK 1.2) als optionales Paket erhältlich.&lt;br /&gt;
&lt;br /&gt;
Die Java Cryptography Extension beruht auf derselben Architektur wie die [[Java Cryptography Architecture]] (JCA) und wird als Teil der JCA gesehen. Die Aufteilung in JCA und JCE war nötig, weil die USA früher den Export kryptographischer Systeme beschränkten. Die JCA enthält nur [[Hashfunktion]]en, Schlüsselgeneratoren usw. und durfte frei exportiert werden. Für starke Verschlüsselungsalgorithmen galt dies nicht; deshalb lagerte man sie in die JCE aus. Implementierungen mussten von anderer Stelle bezogen werden.&lt;br /&gt;
&lt;br /&gt;
Wie die Klassen der JCA liegen die der JCE heute in den Packages &amp;lt;code&amp;gt;java.security&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;javax.crypto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Funktionalität ==&lt;br /&gt;
Die Java Cryptography Extension basiert auf sogenannten Kryptographie-Providern, das sind Implementierungen von verschiedenen, durch die JCE abstrahierten kryptographischen Konzepten. Neue Konzepte können leicht hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
Die Java Cryptography Extension bietet folgende Funktionalitäten:&lt;br /&gt;
* &amp;#039;&amp;#039;Cipher&amp;#039;&amp;#039; – Kryptographische [[Algorithmus|Algorithmen]] ([[Symmetrisches Kryptosystem|symmetrische]] und [[Asymmetrisches Kryptosystem|asymmetrische]]) zum Verschlüsseln, [[Blockverschlüsselung|Block-]] und [[Stromverschlüsselung|Streamchiffren]]&lt;br /&gt;
* &amp;#039;&amp;#039;Key Management&amp;#039;&amp;#039; – Die Klassen &amp;lt;code&amp;gt;KeyGenerator&amp;lt;/code&amp;gt; für die Schlüsselgenerierung, &amp;lt;code&amp;gt;KeyAgreement&amp;lt;/code&amp;gt; zum sicheren Aushandeln von Schlüsseln sowie &amp;lt;code&amp;gt;SecretKeyFactory&amp;lt;/code&amp;gt; zur Zerlegung von Schlüsseln in ihre Anteile&lt;br /&gt;
* &amp;#039;&amp;#039;Message Authentication Codes&amp;#039;&amp;#039; – zur Berechnung von Authentifizierungen für Kommunikationen&lt;br /&gt;
* Sichere Objekte und [[digitale Signatur]]en&lt;br /&gt;
&lt;br /&gt;
Die Java Cryptography Extension ist, wie auch die Java Cryptography Architecture, von der Implementierung der konkreten Algorithmen unabhängig. Über ein [[Service Provider Interface]] (SPI) können unterschiedliche Implementierungen von unterschiedlichen Herstellern gleichzeitig in die Java-Laufzeitumgebung eingebunden werden. Java wird ab Version 1.4 mit einer JCE und JCA Implementierung ausgeliefert, andere Implementierungen können aber einfach sowohl statisch als auch dynamisch nachgeladen werden.&lt;br /&gt;
&lt;br /&gt;
Zu den bekanntesten JCE-Implementierungen gehören:&lt;br /&gt;
* &amp;#039;&amp;#039;[[Bouncy Castle]]&amp;#039;&amp;#039; – eine [[Open Source|Open-Source]]-Implementierung der &amp;#039;&amp;#039;Java Cryptography Extension&amp;#039;&amp;#039; und eine „leichtgewichtige“ Java-Cryptography-API für J2ME und JDK.&amp;lt;ref&amp;gt;[https://www.bouncycastle.org/ JCE Provider der australischen Organisation The Legion of the Bouncy Castle]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* IAIK-JCE – eine Implementierung des Instituts für Angewandte Informationsverarbeitung und Kommunikationstechnologie (IAIK) der [[Technische Universität Graz|Technischen Universität Graz]].&amp;lt;ref&amp;gt;[https://jce.iaik.tugraz.at/products/core-crypto-toolkits/jca-jce/ IAIK-JCE Provider der TU Graz]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Das folgende Beispiel zeigt die Verschlüsselung und Entschlüsselung eines [[Zeichenkette|Strings]] mittels [[Advanced Encryption Standard|AES]]-[[Cipher Block Chaining Mode|CBC]] mit [[Padding (Informatik)|Padding]] nach [[PKCS]] #7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Schlüssel erzeugen&lt;br /&gt;
SecretKey secretKey = KeyGenerator.getInstance(&amp;quot;AES&amp;quot;).generateKey();&lt;br /&gt;
&lt;br /&gt;
// Verfahren wählen&lt;br /&gt;
Cipher cipher = Cipher.getInstance(&amp;quot;AES/CBC/PKCS7PADDING&amp;quot;);&lt;br /&gt;
cipher.init(Cipher.ENCRYPT_MODE, secretKey);&lt;br /&gt;
&lt;br /&gt;
// Umwandlung des Strings nach Bytes basierend auf UTF-8&lt;br /&gt;
byte[] utf8Bytes = &amp;quot;Zu verschlüsselnder String&amp;quot;.getBytes(&amp;quot;UTF8&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Verschlüsselung&lt;br /&gt;
byte[] encryptedBytes = cipher.doFinal(utf8Bytes);&lt;br /&gt;
&lt;br /&gt;
// Base64 encoding um wieder einen String zu bekommen&lt;br /&gt;
String encryptedString = java.util.Base64.getEncoder().encodeToString(encryptedBytes);&lt;br /&gt;
&lt;br /&gt;
// Cipher für Entschlüsselung vorbereiten&lt;br /&gt;
cipher.init(Cipher.DECRYPT_MODE, secretKey);&lt;br /&gt;
&lt;br /&gt;
// Rückumwandlung in Byte-Array&lt;br /&gt;
encryptedBytes = java.util.Base64.getDecoder().decode(encryptedString);&lt;br /&gt;
&lt;br /&gt;
// Entschlüsselung&lt;br /&gt;
utf8Bytes = cipher.doFinal(encryptedBytes);&lt;br /&gt;
&lt;br /&gt;
// Rückumwandlung in einen String&lt;br /&gt;
return new String(utf8Bytes, &amp;quot;UTF8&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Jason Weiss&lt;br /&gt;
   |Titel=Java Cryptography Extensions&lt;br /&gt;
   |TitelErg=Practical Guide for Programmers&lt;br /&gt;
   |Verlag=Morgan Kaufmann&lt;br /&gt;
   |Datum=2004&lt;br /&gt;
   |ISBN=978-0-12-742751-5&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Rich Helton, Johennie Helton&lt;br /&gt;
   |Titel=Java Security Solutions&lt;br /&gt;
   |Verlag=Wiley&lt;br /&gt;
   |Datum=2002&lt;br /&gt;
   |ISBN=978-0-7645-4928-1&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=David Hook&lt;br /&gt;
   |Titel=Beginning Cryptography with Java&lt;br /&gt;
   |Verlag=John Wiley &amp;amp; Sons&lt;br /&gt;
   |Datum=2005&lt;br /&gt;
   |ISBN=978-0-7645-9633-9&lt;br /&gt;
   |Sprache=en}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* https://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html Java Cryptography Architecture (JCA) Reference Guide&lt;br /&gt;
* https://docs.oracle.com/javase/tutorial/security/index.html – Java Tutorial zu Security im Allgemeinen&lt;br /&gt;
* https://docs.oracle.com/javase/7/docs/technotes/guides/security/overview/jsoverview.html – Übersicht über Java Security&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java-Programmierschnittstelle]]&lt;br /&gt;
[[Kategorie:Kryptosoftware]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Carolus requiescat</name></author>
	</entry>
</feed>