/////////////////////////////////////////////////////////// // CRIPTOGRAFIA - Técnicas de desarrollo para profesionales /////////////////////////////////////////////////////////// // Capítulo 3: Criptografía en entornos Java // Sección 3.4: Codificación de encriptación asimétrica /////////////////////////////////////////////////////////// // Listado 3.4: Segundo ejemplo para encriptación y la // desencriptación utilizando el algoritmo RSA; llaves // generadas aleatoriamente. /////////////////////////////////////////////////////////// import java.security.*; import javax.crypto.*; public class EjemploRSA2 { public static void main (String[] args) throws Exception { // Definir entrada o texto-plano byte[] texto_plano = "Contenido de prueba".getBytes(); // Generar llaves RSA de 1024 bits de longitud KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(1024); KeyPair key = keyGen.generateKeyPair(); // Obtener instancia del cifrador Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); // Inicilizar nuestra instancia del cifrador cipher.init(Cipher.ENCRYPT_MODE, key.getPublic()); // Encriptar nuestro texto-plano byte[] cifrado = cipher.doFinal(texto_plano); // Imprimir la salida como prueba System.out.println( new String(cifrado) ); // Inicializar para desencriptación cipher.init(Cipher.DECRYPT_MODE, key.getPrivate()); // Desencriptar byte[] nuevo_texto_plano = cipher.doFinal(cifrado); // Imprimir la salida como prueba System.out.println( new String(nuevo_texto_plano) ); } }