Caso Práctico en NetBeans
Este ejemplo muestra cómo implementar un sistema de cifrado asimétrico usando Java en NetBeans:
Cifrado simétrico
Código:
package cifradosimetrico;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.JOptionPane;
import java.util.Base64;
public class CifradoSimetrico {
public static void main(String[] args) {
// Paso 1: Solicitar usuario y contraseña
String usuario = JOptionPane.showInputDialog(null, "Ingrese el usuario:");
String contraseña = JOptionPane.showInputDialog(null, "Ingrese la contraseña:");
// Paso 2: Validar credenciales
if (usuario.equals("ADMIN") && contraseña.equals("1234")) {
JOptionPane.showMessageDialog(null, "¡Acceso concedido!");
try {
// Paso 3: Crear clave simétrica AES (128 bits)
KeyGenerator generador = KeyGenerator.getInstance("AES");
generador.init(128); // Puedes usar 192 o 256 si Java lo permite
SecretKey claveSimetrica = generador.generateKey();
// Mostrar la clave en Base64
String claveBase64 = Base64.getEncoder().encodeToString(claveSimetrica.getEncoded());
JOptionPane.showMessageDialog(null, "Clave simétrica generada (AES - Base64):\n" + claveBase64);
// Paso 4: Cifrar la contraseña con la clave
Cipher cifrador = Cipher.getInstance("AES");
cifrador.init(Cipher.ENCRYPT_MODE, claveSimetrica);
byte[] cifradoBytes = cifrador.doFinal(contraseña.getBytes());
String contraseñaCifrada = Base64.getEncoder().encodeToString(cifradoBytes);
// Mostrar la contraseña cifrada
JOptionPane.showMessageDialog(null,
"Su clave es: " + contraseña +
"\nSu clave encriptada (AES) es:\n" + contraseñaCifrada);
// Paso 5: Descifrar
cifrador.init(Cipher.DECRYPT_MODE, claveSimetrica);
byte[] descifradoBytes = cifrador.doFinal(Base64.getDecoder().decode(contraseñaCifrada));
String contraseñaDescifrada = new String(descifradoBytes);
// Mostrar verificación
JOptionPane.showMessageDialog(null,
"Verificación: la clave descifrada es:\n" + contraseñaDescifrada);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error durante el proceso: " + e.getMessage());
}
} else {
JOptionPane.showMessageDialog(null, "Acceso denegado. Usuario o contraseña incorrectos.");
}
}
}
Comentarios
Publicar un comentario