Kryptographie in Java. KeyPair-Klasse

Hallo Habr! Ich präsentiere Ihnen die Übersetzung von 6, 7 und 8 Artikeln von Jakob Jenkov aus einer Reihe von Artikeln für Anfänger , die die Grundlagen der Kryptographie in Java erlernen möchten.


Inhaltsverzeichnis:


  1. Java-Kryptographie
  2. Java-Chiffre
  3. Messagedigest
  4. Mac
  5. Unterschrift
  6. Schlüsselpaar
  7. Schlüsselgenerator
  8. KeyPairGenerator
  9. Keystore
  10. Keytool
  11. Zertifikat
  12. CertificateFactory
  13. CertPath

Schlüsselpaar


Die KeyPair-Klasse ( java.security.KeyPair ) ist ein Paar asymmetrischer Schlüssel (öffentlicher Schlüssel + privater Schlüssel). Eine KeyPair-Instanz wird häufig in der asymmetrischen Kryptografie (Datenverschlüsselung oder Signatur) verwendet. In der Regel wird eine KeyPair-Instanz aus dem Java-Schlüsselspeicher oder KeyPairGenerator abgerufen, auf die später in diesem Artikel eingegangen wird.


Zugriff auf öffentliche Schlüssel


Sie können auf den öffentlichen Schlüssel einer Instanz von KeyPair zugreifen, indem Sie die Methode getPublic () aufrufen. Ein Beispiel für den Erhalt eines öffentlichen Schlüssels:


PublicKey publicKey = keyPair.getPublic(); 

Privater Schlüsselzugriff


Sie können auch auf den privaten Schlüssel der KeyPair-Instanz zugreifen, indem Sie die Methode getPrivate () aufrufen. Hier ist ein Beispiel für das Abrufen eines privaten Schlüssels:


 PrivateKey privateKey = keyPair.getPrivate(); 

Schlüsselgenerator


Die KeyGenerator-Klasse ( javax.crypto.KeyGenerator ) wird zum Generieren symmetrischer Verschlüsselungsschlüssel verwendet. Ein symmetrischer Verschlüsselungsschlüssel ist ein Schlüssel, der zum Ver- und Entschlüsseln von Daten mithilfe eines symmetrischen Verschlüsselungsalgorithmus verwendet wird.


Erstellen einer Instanz von KeyGenerator


Bevor Sie die KeyGenerator-Klasse verwenden können, müssen Sie eine Instanz von KeyGenerator erstellen. Eine KeyGenerator-Instanz wird durch Aufrufen der statischen Methode getInstance () als Parameter erstellt, der den Namen des Verschlüsselungsalgorithmus verwendet, für den der Schlüssel erstellt wird. Hier ist ein Beispiel zum Erstellen einer Instanz von KeyGenerator:


 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); 

In diesem Beispiel wird eine Instanz von KeyGenerator erstellt, die Schlüssel für den AES-Verschlüsselungsalgorithmus generieren kann.


KeyGenerator-Initialisierung


Nachdem Sie eine Instanz von KeyGenerator erstellt haben, müssen Sie diese initialisieren. Die Initialisierung einer Instanz erfolgt durch Aufrufen der Methode init () . Beispiel für die Initialisierung der KeyGenerator-Instanz:


 SecureRandom secureRandom = new SecureRandom(); int keyBitSize = 256; keyGenerator.init(keyBitSize, secureRandom); 

Die init () -Methode akzeptiert zwei Parameter: die Schlüssellänge und SecureRandom , die während der Schlüsselgenerierung verwendet werden.


Schlüsselgenerierung


Nach dem Initialisieren der KeyGenerator-Instanz können Sie damit die Schlüssel generieren. Die Schlüsselgenerierung erfolgt durch Aufrufen der Methode generateKey () . Hier ist ein Beispiel für die Generierung eines symmetrischen Schlüssels:


 SecretKey secretKey = keyGenerator.generateKey(); 

Schlüsselpaargenerator


Die KeyPairGenerator-Klasse ( java.security.KeyPairGenerator ) wird zum Generieren asymmetrischer Schlüsselpaare verwendet. Ein Paar asymmetrischer Schlüssel besteht aus zwei Schlüsseln: Der erste Schlüssel wird normalerweise zum Verschlüsseln von Daten verwendet, und der zweite Schlüssel wird zum Entschlüsseln von mit dem ersten Schlüssel verschlüsselten Daten verwendet.


Öffentliche und private Schlüssel


Der bekannteste Typ eines asymmetrischen Schlüsselpaars ist der Typ des Schlüsselpaars der Form: öffentlicher Schlüssel + privater Schlüssel. Der private Schlüssel wird zum Verschlüsseln von Daten und der öffentliche Schlüssel zum Entschlüsseln von Daten verwendet. Tatsächlich können Sie Daten auch mit dem öffentlichen Schlüssel verschlüsseln und mit dem privaten Schlüssel entschlüsseln. Der private Schlüssel wird normalerweise geheim gehalten, und der öffentliche Schlüssel kann jedem bekannt sein. Wenn Jack also einige Daten mit seinem privaten Schlüssel verschlüsselt, kann jeder, der Jacks öffentlichen Schlüssel besitzt, diese entschlüsseln.


Erstellen einer Instanz von KeyPairGenerator


Um KeyPairGenerator verwenden zu können, müssen Sie zuerst eine Instanz der KeyPairGenerator-Klasse erstellen. Eine Instanz von KeyPairGenerator wird durch Aufrufen der Methode getInstance () erstellt . Hier ist ein Beispiel zum Erstellen einer Instanz:


 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); 

Die Methode getInstance () akzeptiert den Namen des zu verwendenden Verschlüsselungsalgorithmus. In diesem Beispiel verwenden wir den RSA-Algorithmus.


Initialisierung KeyPairGenerator


Je nach Algorithmus müssen Sie möglicherweise eine Instanz von KeyPairGenerator initialisieren. KeyPairGenerator wird durch Aufrufen seiner initialize () -Methode initialisiert . Beispiel für die Initialisierung der KeyPairGenerator-Instanz:


 keyPairGenerator.initialize(2048); 

In diesem Beispiel wird ein KeyPairGenerator initialisiert, um 2048-Bit-Schlüssel zu generieren.


Schlüsselpaargenerierung


Um ein Schlüsselpaar mit KeyPairGenerator zu generieren , wird die Methode generateKeyPair () aufgerufen. Hier ist ein Beispiel für die Schlüsselpaargenerierung:


 KeyPair keyPair = keyPairGenerator.generateKeyPair(); 

Source: https://habr.com/ru/post/de445560/


All Articles