Criptografía Java - KeyGenerator

Java proporciona KeyGenerator class esta clase se utiliza para generar claves secretas y los objetos de esta clase son reutilizables.

Para generar claves usando la clase KeyGenerator, siga los pasos que se indican a continuación.

Paso 1: crear un objeto KeyGenerator

los KeyGenerator la clase proporciona getInstance() método que acepta una variable String que representa el algoritmo de generación de claves requerido y devuelve un objeto KeyGenerator que genera claves secretas.

Crear KeyGenerator objeto usando el getInstance() método como se muestra a continuación.

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

Paso 2: crear un objeto SecureRandom

los SecureRandom clase de la java.SecurityEl paquete proporciona un potente generador de números aleatorios que se utiliza para generar números aleatorios en Java. Cree una instancia de esta clase como se muestra a continuación.

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

Paso 3: inicializar KeyGenerator

los KeyGenerator la clase proporciona un método llamado init() este método acepta el objeto SecureRandom e inicializa el actual KeyGenerator.

Inicialice el objeto KeyGenerator creado en el paso anterior usando el init() método.

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

Ejemplo

El siguiente ejemplo demuestra la generación de claves de la clave secreta utilizando la clase KeyGenerator del javax.crypto paquete.

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);      
   }
}

Salida

El programa anterior genera la siguiente salida:

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