Crittografia Java - KeyGenerator
Java fornisce KeyGenerator classe questa classe viene utilizzata per generare chiavi segrete e gli oggetti di questa classe sono riutilizzabili.
Per generare chiavi utilizzando la classe KeyGenerator seguire i passaggi indicati di seguito.
Passaggio 1: crea un oggetto KeyGenerator
Il KeyGenerator classe fornisce getInstance() che accetta una variabile String che rappresenta l'algoritmo di generazione della chiave richiesto e restituisce un oggetto KeyGenerator che genera chiavi segrete.
Creare KeyGenerator oggetto utilizzando il getInstance() metodo come mostrato di seguito.
//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
Passaggio 2: crea l'oggetto SecureRandom
Il SecureRandom classe di java.SecurityIl pacchetto fornisce un potente generatore di numeri casuali che viene utilizzato per generare numeri casuali in Java. Istanziare questa classe come mostrato di seguito.
//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();
Passaggio 3: inizializza KeyGenerator
Il KeyGenerator class fornisce un metodo denominato init() questo metodo accetta l'oggetto SecureRandom e inizializza il file current KeyGenerator.
Inizializza l'oggetto KeyGenerator creato nel passaggio precedente utilizzando il init() metodo.
//Initializing the KeyGenerator
keyGen.init(secRandom);
Esempio
L'esempio seguente mostra la generazione della chiave della chiave segreta utilizzando la classe KeyGenerator di javax.crypto pacchetto.
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);
}
}
Produzione
Il programma di cui sopra genera il seguente output:
com.sun.crypto.provider.DESKey@18629
[B@2ac1fdc4