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