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