Codificar Y Decodificar En Base64 En Java 8
Categorías: Java

Codificar Y Decodificar En Base64 En Java 8

La protección de los datos es una parte fundamental en cualquier desarrollo que se realice. En la actualidad existen diversos métodos de encriptación que puedes usar, uno de los mas conocidos es el método de codificación y decodificacion Base64. La importancia de esto radica en la importancia de proteger los datos mas sensibles de los usuarios, aunque puede ser fácil de cifrar y descifrar, puedes usar este método criptográfico como la primer medida de protección para los datos.

Anteriormente, para usar Base64 en Java, era necesario crear la clase o el método para poder usar este método de encriptación, algo que resultaría tedioso si lo tuyo no es la criptografía 😉 Por suerte para ti y para mi, en Java 8 ya puedes hacer uso de Base64 de forma nativa.

¿Qué es cifrar en Base 64?

Cuando tienes algunos datos binarios que deseas enviar a través de una red, por lo general se cifran los datos con algún método que no genere problemas en el proceso del envío y la recepción de los datos.

El método de cifrado y descifrado de Base 64 convierte los 64 caracteres ASCII imprimibles en datos no legibles para el usuario. Generalmente este método de cifrado se usa para los datos «básicos», ya que el cifrado ya es conocido y fácilmente de descifrar.

Soporte De Base64 En Java 8

En versiones anteriores de Java 8, era necesario el uso de una librería no oficial para usar este método de cifrado, eso ya es cosa del pasado, ya que en Java 8 se  ha añadido una clase para el cifrado y descifrado en base 64, la cual se encuentra en java.util.Base64. Los vamos a ejemplos de código siguientes para usarlo.

Librerías Para Usar Base64 En Java

Para usar correctamente este método de cifrado y descifrado, es necesario hacer el uso de dos librerías, una es la que se ha mencionado anteriormente, y la otra… bueno, a continuación podrás ver las librerías necesarias.

import java.nio.charset.StandardCharsets;
import java.util.Base64;

La librería de la linea 1, es necesaria al momento de cifrar el mensaje con base64, la siguiente librería, es necesaria para usar tanto el método de codificado y decodificado.

Métodos Para Cifrar Y Descifrar Con Base64 En Java

A continuación veras los métodos para cifrar y descifrar texto en Java, lo podrás usar de la siguiente manera:

Cifrar: metodosBase64.cifrarBase64(Variable o texto a cifrar);
Descifrar: metodosBase64.descifrarBase64(Variable o texto a descifrar);

Los metodos son los siguientes:

public static String cifrarBase64(String a){
        Base64.Encoder encoder = Base64.getEncoder();
        String b = encoder.encodeToString(a.getBytes(StandardCharsets.UTF_8) );        
        return b;
    }
    
    public static String descifrarBase64(String a){
        Base64.Decoder decoder = Base64.getDecoder();
        byte[] decodedByteArray = decoder.decode(a);
        
        String b = new String(decodedByteArray);        
        return b;
    }

Como puedes ver, el ambito o alcance de los métodos no están limitados, si deseas cambiar el ambito de los métodos, ya es tu decisión 😉

Ejemplo Práctico Para Usar Base64 En Java

Para aprender o ver el funcionamiento de algo, muchas veces es necesario ver un ejemplo, y este tema no es la excepción 😉 A continuación podrás ver un ejemplo de como funciona este método de cifrado en Java usando una interfaz gráfica, el ejercicio tendrá 2 clases, una donde se tenga la interfaz y en ella los eventos necesarios para el cifrado y descifrado, la otra, los anteriores método para cifras y descifrar los datos.

Ver Código Interfaz...
package ejemplobase64;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class EjemploBase64 extends javax.swing.JFrame implements ActionListener {

    public EjemploBase64() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // //GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jtCifrar = new javax.swing.JTextField();
        jbCifrar = new javax.swing.JButton();
        jbDescifrar = new javax.swing.JButton();
        jtAResultado = new java.awt.TextArea();
        jtDescifrar = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Usar base64");
        setMaximumSize(new java.awt.Dimension(750, 450));
        setMinimumSize(new java.awt.Dimension(750, 450));
        setResizable(false);
        setLocation(80, 20);
        getContentPane().setLayout(null);

        jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED, null, new java.awt.Color(200, 200, 200), null, null));
        jPanel1.setLayout(null);

        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Herramienta para cifrar y descifrar en base64");
        jLabel1.setMaximumSize(new java.awt.Dimension(130, 14));
        jLabel1.setMinimumSize(new java.awt.Dimension(130, 14));
        jLabel1.setPreferredSize(new java.awt.Dimension(130, 14));
        jPanel1.add(jLabel1);
        jLabel1.setBounds(12, 14, 320, 14);

        jLabel2.setText("Crifrar");
        jPanel1.add(jLabel2);
        jLabel2.setBounds(13, 49, 80, 14);

        jLabel3.setText("Descifrar");
        jPanel1.add(jLabel3);
        jLabel3.setBounds(13, 90, 80, 14);

        jtCifrar.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jtDescifrar.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jPanel1.add(jtCifrar);
        jtCifrar.setBounds(110, 50, 100, 20);

        jbCifrar.setFont(new java.awt.Font("Verdana", 1, 12)); // NOI18N
        jbCifrar.setText("Cifrar");
        jbCifrar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbCifrar.addActionListener(this);
        jbDescifrar.addActionListener(this);
        jPanel1.add(jbCifrar);
        jbCifrar.setBounds(10, 130, 120, 30);
        jbCifrar.getAccessibleContext().setAccessibleName("Cifrar");

        jbDescifrar.setFont(new java.awt.Font("Verdana", 1, 12)); // NOI18N
        jbDescifrar.setLabel("Descifrar");
        jbDescifrar.setMaximumSize(new java.awt.Dimension(91, 25));
        jbDescifrar.setMinimumSize(new java.awt.Dimension(91, 25));
        jPanel1.add(jbDescifrar);
        jbDescifrar.setBounds(150, 130, 120, 30);
        jPanel1.add(jtAResultado);
        jtAResultado.setBounds(320, 30, 210, 140);
        jPanel1.add(jtDescifrar);
        jtDescifrar.setBounds(110, 90, 100, 20);

        getContentPane().add(jPanel1);
        jPanel1.setBounds(60, 40, 550, 310);

        pack();
    }// //GEN-END:initComponents

   
    public void actionPerformed(ActionEvent e) {
        
        if(e.getSource() == jbCifrar){
            if(!jtCifrar.equals("")){  
                jtAResultado.setText("");
                jtDescifrar.setText("");
                jtAResultado.setText(metodosBase64.cifrarBase64(jtCifrar.getText()));                
            }            
        }else if(e.getSource() == jbDescifrar){
            if(!jtDescifrar.equals("")){  
                jtAResultado.setText("");
                jtCifrar.setText("");
                jtAResultado.setText(metodosBase64.descifrarBase64(jtDescifrar.getText()));                
            } 
        }
    }
    /**
     * @param args the command line arguments
     */    public static void main(String args[]) {
        /* Set the Nimbus look and feel */        //
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("WindowsLookAndFeel".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(EjemploBase64.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(EjemploBase64.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(EjemploBase64.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(EjemploBase64.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //

        /* Create and display the form */        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new EjemploBase64().setVisible(true);
            }
        });
    }

    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jbDescifrar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JButton jbCifrar;
    private javax.swing.JTextField jtCifrar;
    private javax.swing.JTextField jtDescifrar;
    private java.awt.TextArea jtAResultado;
    // End of variables declaration//GEN-END:variables
}

A continuación, podrás ver el código de la clase que contiene los métodos para cifrar y descifrar en Base64:

Ver Código Base64...
package ejemplobase64;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class metodosBase64 {
    
    public static String cifrarBase64(String a){
        Base64.Encoder encoder = Base64.getEncoder();
        String b = encoder.encodeToString(a.getBytes(StandardCharsets.UTF_8) );        
        return b;
    }
    
    public static String descifrarBase64(String a){
        Base64.Decoder decoder = Base64.getDecoder();
        byte[] decodedByteArray = decoder.decode(a);
        
        String b = new String(decodedByteArray);        
        return b;
    }
}

La estructura del proyecto que he manejado es la siguiente:

Como lo puedes ver es algo sencillo de usar, si deseas tener el código en el paquete para trabajarlo en Netbeans, te invito a descargarlo, solo tendrás que regalarme una acción social, ya sea una Like, Tweet o +1 😉 Vamos, no te cuesta nada 🙂

Desbloquea el contenido con una acción social...

Comparte este articulo y obtén el contenido premium!

Facebook
Twitter
Linkedin0
WP Dev JaGonzalez

Hijo, esposo y padre de un hermoso niño. Amante de los animales, la tecnología, informática y programación. Si tienes alguna duda, inquietud, comentario o deseas comunicarte directamente conmigo, puedes enviarme un correo electrónico a admin@jagonzalez.org

Ver comentarios

Compartir
Publicado por
WP Dev JaGonzalez

Entradas recientes

iPhone Hackeado: Qué Hacer para Proteger tu Dispositivo y Asegurar tu Seguridad

¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…

2 meses hace

Cómo Restablecer un iPhone a su Estado de Fábrica

Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…

2 meses hace

Motorola planea lanzar al menos dos nuevos teléfonos Moto G en septiembre

Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…

1 año hace

El equipo de WizardLM afirma que un modelo de IA de terceros les robó el trabajo

Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…

1 año hace

Las fallas del complemento Jupiter X Core amenazaron a 172.000 sitios web con apropiaciones de cuentas

Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…

1 año hace

Consola portátil Xbox: aquí tienes todo lo que necesitas saber al respecto

Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…

1 año hace