Criptografía en Java. Clase KeyPair

Hola Habr! Les presento la traducción de 6, 7 y 8 artículos de Jakob Jenkov de una serie de artículos para principiantes que desean aprender los conceptos básicos de la criptografía en Java.


Tabla de contenido:


  1. Criptografía Java
  2. Cifrado de Java
  3. Messagedigest
  4. Mac
  5. Firma
  6. Par de llaves
  7. Generador de claves
  8. KeyPairGenerator
  9. Keystore
  10. Keytool
  11. Certificado
  12. CertificateFactory
  13. CertPath

Par de llaves


La clase KeyPair ( java.security.KeyPair ) es un par de claves asimétricas (clave pública + clave privada). Una instancia de KeyPair se usa comúnmente en criptografía asimétrica (cifrado o firma de datos). Típicamente, una instancia de KeyPair se obtiene del almacén de claves de Java o KeyPairGenerator, que se discutirá más adelante en este artículo.


Acceso a clave pública


Puede acceder a la clave pública de una instancia de KeyPair llamando a su método getPublic () . Un ejemplo de obtención de una clave pública:


PublicKey publicKey = keyPair.getPublic(); 

Acceso a clave privada


También puede acceder a la clave privada de la instancia de KeyPair llamando a su método getPrivate () . Aquí hay un ejemplo de cómo obtener una clave privada:


 PrivateKey privateKey = keyPair.getPrivate(); 

Generador de claves


La clase KeyGenerator ( javax.crypto.KeyGenerator ) se usa para generar claves de cifrado simétricas. Una clave de cifrado simétrica es una clave que se utiliza para cifrar y descifrar datos utilizando un algoritmo de cifrado simétrico.


Crear una instancia de KeyGenerator


Antes de poder usar la clase KeyGenerator, debe crear una instancia de KeyGenerator. Una instancia de KeyGenerator se crea llamando al método estático getInstance () , como un parámetro que toma el nombre del algoritmo de cifrado para el que se está creando la clave. Aquí hay un ejemplo de cómo crear una instancia de KeyGenerator:


 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); 

Este ejemplo crea una instancia de KeyGenerator que puede generar claves para el algoritmo de cifrado AES.


KeyGenerator Initialization


Después de crear una instancia de KeyGenerator, debe inicializarla. La inicialización de una instancia se logra llamando al método init () . Ejemplo de inicialización de instancia de KeyGenerator:


 SecureRandom secureRandom = new SecureRandom(); int keyBitSize = 256; keyGenerator.init(keyBitSize, secureRandom); 

El método init () acepta dos parámetros: la longitud de la clave y SecureRandom , que se usa durante la generación de la clave.


Generación clave


Después de inicializar la instancia de KeyGenerator, puede usarla para generar las claves. La generación de claves se realiza llamando al método generateKey () . Aquí hay un ejemplo de generación de una clave simétrica:


 SecretKey secretKey = keyGenerator.generateKey(); 

Generador de par de llaves


La clase KeyPairGenerator ( java.security.KeyPairGenerator ) se usa para generar pares de claves asimétricas. Un par de claves asimétricas consta de dos claves: la primera clave se usa generalmente para cifrar datos, y la segunda clave se usa para descifrar datos cifrados con la primera clave.


Claves públicas y privadas


El tipo de par de claves asimétricas más famoso es el tipo de par de claves de la forma: clave pública + clave privada. La clave privada se usa para cifrar datos, y la clave pública se usa para descifrar datos. De hecho, también puede cifrar datos con la clave pública y descifrarlos con la clave privada. La clave privada generalmente se mantiene en secreto, y la clave pública puede ser conocida por todos. Por lo tanto, si Jack cifra algunos datos con su clave privada, cualquier persona que posea la clave pública de Jack puede descifrarla.


Crear una instancia de KeyPairGenerator


Para usar KeyPairGenerator, primero debe crear una instancia de la clase KeyPairGenerator. Se crea una instancia de KeyPairGenerator llamando al método getInstance () . Aquí hay un ejemplo de creación de una instancia:


 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); 

El método getInstance () acepta el nombre del algoritmo de cifrado que se utilizará. En este ejemplo, usamos el algoritmo RSA.


Initialization KeyPairGenerator


Dependiendo del algoritmo, es posible que deba inicializar una instancia de KeyPairGenerator. KeyPairGenerator se inicializa llamando a su método initialize () . Ejemplo de inicialización de instancia de KeyPairGenerator:


 keyPairGenerator.initialize(2048); 

En este ejemplo, un KeyPairGenerator se inicializa para generar claves de 2048 bits.


Generación de pares de claves


Para generar un par de claves utilizando KeyPairGenerator, se llama al método generateKeyPair () . Aquí hay un ejemplo de generación de pares de claves:


 KeyPair keyPair = keyPairGenerator.generateKeyPair(); 

Source: https://habr.com/ru/post/445560/


All Articles