Métodos para Encriptar y Desencriptar en Java

En esta oportunidad presentamos 2 métodos para proteger los datos en sus desarrollos. Los métodos contienen una llave escrita en duro “qualityinfosolutions” que es la que nos permite Encriptar y luego Desencriptar nuestros datos, si las llaves no coinciden no podrán utilizar ambos métodos por lo que es recomendable manejar esta llave como una variable global.
Librerias:

import java.security.MessageDigest;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

Descargar commons-codec-1.9.jar  

Commons-codec (257.8 KiB)

Método de Encriptación

Forma de uso suponiendo que fue creada en la clase utilidades como se muestra a continuación:

Clase AppUtilidades

Clase Utilidades

CC BY-NC-ND 4.0 Métodos para Encriptar y Desencriptar en Java by QualityInfoSolutions is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

You may also like...

41 Responses

  1. Daniel García Alvarado dijo:

    Que tal, fue de mucha ayuda el post, por si alguien lo necesita en Swift3 te dejo el enlace

    https://github.com/danigarciaalva/CipherAlgorithm

  2. Nadia dijo:

    Hola, yo tengo un problema, estoy utilizando una BD que ya está previamente hecha en postgresql y no la puedo modificar, entonces en esa base existe la contraseña cifrada con la funcion md5 propia de postgresql pero al aplicar el cifrado en java, no coincide con la almacenada en postgreql, alguien sabe como igualar ese mismo cifrado de postgres en java?

  3. Gustavo Huerta dijo:

    No se que pasa me tira el siguiente error
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)
    at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DESedeCipher.java:294)
    at javax.crypto.Cipher.doFinal(Cipher.java:2165)
    at Componentes.EncryptionMD5.Desencriptar(EncryptionMD5.java:75)
    at Ventanas.EditarPerfilTecnico.(EditarPerfilTecnico.java:53)
    at Ventanas.PerfilTecnico.jMenuItem1ActionPerformed(PerfilTecnico.java:394)
    at Ventanas.PerfilTecnico.access$300(PerfilTecnico.java:19)
    at Ventanas.PerfilTecnico$4.actionPerformed(PerfilTecnico.java:277)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    Hay conection
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)

  4. Alejandro dijo:

    Alguien tiene el equivalente a esos dos metodos en c#?

  5. Hugo dijo:

    Buenas tardes, excelente encriptador.. una ayuda si quisiera retirar un caracter del string encriptado? por ejemplo de devuelve “phd12/ewew” y no quiero el “/” en el string.

    Saludos!

    • si quitas cualquier carácter del resultado luego no podrás desencriptar la cadena resultante.

    • Jhon Tamayo dijo:

      En primer lugar deberías validar el universo total de caracteres generados por el método, por ejemplo no creo que genere un espacio en blanco ” “, si ese fuese el caso luego de encriptar el valor podrías reemplazar el caracter que no desees por el caracter de reemplazo que desees, la cadena resultante sería el valor encriptado.
      Al momento de desencriptar deberías hacer lo inverso, reemplazar el caracter que usaste como reemplazo, por el caracter inicial, y aplicar la función de desencriptar.

  6. victor acuña dijo:

    quisiera saber si existe un equivalente en php

  7. Christian dijo:

    java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64

    me tira ese error

  8. Gabriel dijo:

    Hola, probe el codigo pero con AES en lugar de DESede pero no funciona cual seria el problema o no tiene compatibilidad con AES?

  9. adolfo vanegas dijo:

    Excelente, muy buen post, yo tenia un en vb.net y estaba buscando algo parecido en Java, funcionó perfectamente. Gracias por tu tiempo y dedicación.

  10. Daju dijo:

    Muchas Gracias muy efectivo tu metodo

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *

Contáctenos