Java-Kryptographie - KeyGenerator

Java bietet KeyGenerator Klasse Diese Klasse wird verwendet, um geheime Schlüssel zu generieren, und Objekte dieser Klasse können wiederverwendet werden.

Führen Sie die folgenden Schritte aus, um Schlüssel mit der KeyGenerator-Klasse zu generieren.

Schritt 1: Erstellen Sie ein KeyGenerator-Objekt

Das KeyGenerator Klasse bietet getInstance() Methode, die eine String-Variable akzeptiert, die den erforderlichen Algorithmus zur Schlüsselgenerierung darstellt, und ein KeyGenerator-Objekt zurückgibt, das geheime Schlüssel generiert.

Erstellen KeyGenerator Objekt mit dem getInstance() Methode wie unten gezeigt.

//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");

Schritt 2: Erstellen Sie ein SecureRandom-Objekt

Das SecureRandom Klasse der java.SecurityDas Paket bietet einen starken Zufallszahlengenerator, mit dem Zufallszahlen in Java generiert werden. Instanziieren Sie diese Klasse wie unten gezeigt.

//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();

Schritt 3: Initialisieren Sie den KeyGenerator

Das KeyGenerator Klasse stellt eine Methode mit dem Namen bereit init() Diese Methode akzeptiert das SecureRandom-Objekt und initialisiert den aktuellen KeyGenerator.

Initialisieren Sie das im vorherigen Schritt erstellte KeyGenerator-Objekt mit dem init() Methode.

//Initializing the KeyGenerator
keyGen.init(secRandom);

Beispiel

Das folgende Beispiel zeigt die Schlüsselgenerierung des geheimen Schlüssels mithilfe der KeyGenerator-Klasse des javax.crypto Paket.

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;

import java.security.Key;
import java.security.SecureRandom;

public class KeyGeneratorExample {
   public static void main(String args[]) throws Exception{
      //Creating a KeyGenerator object
      KeyGenerator keyGen = KeyGenerator.getInstance("DES");
      
      //Creating a SecureRandom object
      SecureRandom secRandom = new SecureRandom();
      
      //Initializing the KeyGenerator
      keyGen.init(secRandom);
      
      //Creating/Generating a key
      Key key = keyGen.generateKey();
      
      System.out.println(key);      
      Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");      
      cipher.init(cipher.ENCRYPT_MODE, key);      

      String msg = new String("Hi how are you");
      byte[] bytes = cipher.doFinal(msg.getBytes());      
      System.out.println(bytes);      
   }
}

Ausgabe

Das obige Programm erzeugt die folgende Ausgabe -

com.sun.crypto.provider.DESKey@18629
[B@2ac1fdc4