Java Cryptography Extension

Java Cryptography Extension

Die Java Cryptography Extension (JCE) ist eine Schnittstelle der Programmiersprache Java und Framework für kryptographische Aufgaben wie Verschlüsselung, Kommunikations-Authentifizierung und Schlüsselverwaltung. Seit dem JDK 1.4 ist sie Teil der Java Platform, Standard Edition, davor war sie (ab JDK 1.2) als optionales Paket erhältlich.

Die Java Cryptography Extension basiert auf derselben Architektur wie die Java Cryptography Architecture (JCA) und wird als Teil der JCA gesehen. Die Aufteilung in JCA und JCE hat historische Gründe, die aus den Exportrestriktionen der USA für kryptographische Systeme resultieren: Starke Verschlüsselungsalgorithmen unterlagen den Exportrestriktionen und wurden in die JCE „ausgelagert“; die JCA enthält keine Verschlüsselungsalgorithmen, sondern Hashfunktionen, Keygeneratoren etc. und unterlag daher nicht den Exportrestriktionen.

Die Klassen der JCE sind (wie die Klassen der JCA) unter den Packages java.security und javax.crypto zu finden.

Inhaltsverzeichnis

Funktionalität

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.

Die Java Cryptography Extension bietet folgende Funktionalitäten:

  • Cypher - Kryptographische Algorithmen (symmetrische und asymmetrische) zum Verschlüsseln, Block- und Streamchiffren
  • Key Management - Die Klassen KeyGenerator für die Schlüsselgenerierung, KeyAgreement zum sicheren Aushandeln von Schlüsseln sowie SecretKeyFactory zur Zerlegung von Schlüsseln in ihre Anteile
  • Message Authentication Codes - zur Berechnung von Authentifizierungen für Kommunikationen
  • Sichere Objekte und digitale Signaturen

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. Zu den bekanntesten JCE Implementierungen gehört der IAIK-JCE Provider des Instituts für Angewandte Informationsverarbeitung und Kommunikationstechnologie (IAIK) der Technischen Universität Graz.[1]

Beispiel

Das folgende Beispiel zeigt die Verschlüsselung und Entschlüsselung eines Strings mittels Blowfish-Algorithmus:

  ...
  Cipher cipher = Cipher.getInstance("Blowfish");
  cipher.init(Cipher.ENCRYPT_MODE, KeyGenerator.getInstance("Blowfish").generateKey());
  
  // Umwandlung des Strings nach Bytes basierend auf UTF-8
  byte[] utf8Bytes = "Zu verschlüsselnder String".getBytes("UTF8");
  
  // Verschlüsselung
  byte[] encryptedBytes = cipher.doFinal(utf8Bytes);
  
  // Base64 encoding um wieder einen String zu bekommen
  String encryptedString = new sun.misc.BASE64Encoder().encode(encryptedBytes);
  
  // Schlüssel für Entschlüsselung vorbereiten
  cipher.init(Cipher.DECRYPT_MODE, KeyGenerator.getInstance("Blowfish").generateKey());
  
  // Rückumwandlung in Byte-Array
  encryptedBytes = new sun.misc.BASE64Decoder().decodeBuffer(encryptedString);
  
  // Entschlüsselung
  utf8Bytes = cipher.doFinal(encryptedBytes);
  
  // Rückumwandlung in einen String
  return new String(utf8Bytes, "UTF8");
  ...

Weblinks

Literatur

  • Jason Weiss: Java Cryptography Extensions. Practical Guide for Programmers. Morgan Kaufmann, 18. Mai 2004, ISBN 978-0127427515.
  • Rich Helton, Johennie Helton: Java Security Solutions. Wiley, 5. September 2002, ISBN 978-0764549281.
  • David Hook: Beginning Cryptography with Java. John Wiley & Sons, 19. August 2005, ISBN 978-0764596339.

Einzelnachweise

  1. IAIK-JCE Provider der TU Graz

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Java Cryptography Architecture — The Java Cryptography Architecture (JCA) is a framework for working with cryptography using the Java programming language. It forms part of the Java security API, and was first introduced in JDK 1.1 in the… …   Wikipedia

  • Java (informatique) — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

  • Java (langage de programmation) — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

  • Java 5 — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

  • Java-Plattform — Die Java Plattform (englisch Java Platform) definiert die Ablaufumgebung (Java Virtual Machine) und Programmierschnittstellen (Java Application Programming Interface) innerhalb der Java Technologie. Der Kern der Java Plattform ist die Java… …   Deutsch Wikipedia

  • Java (Plattform) — Die Java Plattform (englisch Java Platform) definiert die Ablaufumgebung (Java Virtual Machine) und Programmierschnittstellen (Java Application Programming Interface) innerhalb der Java Technologie. Der Kern der Java Plattform ist die Java… …   Deutsch Wikipedia

  • Java Platform, Standard Edition 6 — Die Java Plattform (englisch Java Platform) definiert die Ablaufumgebung (Java Virtual Machine) und Programmierschnittstellen (Java Application Programming Interface) innerhalb der Java Technologie. Der Kern der Java Plattform ist die Java… …   Deutsch Wikipedia

  • Java Plattform — Die Java Plattform (englisch Java Platform) definiert die Ablaufumgebung (Java Virtual Machine) und Programmierschnittstellen (Java Application Programming Interface) innerhalb der Java Technologie. Der Kern der Java Plattform ist die Java… …   Deutsch Wikipedia

  • Java (langage) — Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript. Java …   Wikipédia en Français

  • Langage Java — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”