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...

43 Responses

  1. Luz Castillo dijo:

    Hola oye, una pregunta, Si encripto un archivo en C# y este mismo lo quiero desencriptar en Java, si se puede?

    Ya hice el intento pero no lo desencripta, ocupa un método diferente?

  2. Efectivamente la lógica aplicada en los ejemplos que realice son distintos. Solo mencione alternativas de encriptación similares. Si quisieras hacerlo entre lenguajes tendrías que usar encriptaciones estándares como base 64, md5 o 3DES.

    Saludos

  3. buenas, como estas disculpa cual es el largo máximo del String que devuelve tu método “Desencriptar”?

  4. ROSA ISELA RAMIREZ ZAPATA dijo:

    Hola esta linea import org.apache.commons.codec.binary.Base64; la marca como error netbeans 7.4 ayuda

    • Debe ser solo la forma en la cual la estas agregando, yo he probado esta librería desde la versión 7.0 en adelante sin mayores problemas. La forma correcta de importar la librería es clic derecho en libraries, luego add jar/folder…. luego aceptar. Si sigues con el problema me consultas, saludos

  5. jestur dijo:

    muchas gracias por el aporte, disculpa estoy comenzando en esto me podrías explicar los métodos de encriptación y como se entrelazan, además de su funcionamiento

  6. Los métodos de encriptación consisten básicamente en un sistema de protección de tus datos convirtiéndolos en cadenas ininteligibles a intrusos. Esta conversión de hace a través de algoritmos como Base64, MD5, DES o Triple DES, los cuales están ya definidos. En estos ejemplos se utiliza una llave la cual sirve para posteriormente poder desencriptar tus datos cifrados.

    En cuanto a la forma de usarla aparece en este mismo articulo.

    Saludos

    • jestur dijo:

      gracias por la respuesta me ha sido de gran ayuda para entender esto. Como ya mencione estoy comenzando en esto y aun resulta un poco confuso para mi.

  7. alberto dijo:

    alguien sabe como desencripto esto?

    Contacta con el particular
    No te pierdas la oportunidad de conseguir este trabajo por sólo:

    Stexxxxxx

    ingxxxxxxxxxxxxxxxxxxxx@xxxxxx.xxx


    044XXXXXXXXXX

  8. Felipe dijo:

    Hola Amigo, para el código C# (sacado de esta misma página) al encriptar la palabra prueba aparece esto como encriptación “YpgJN+JrRNg” y cuando encripto lo mismo en el código Java (en el ejemplo de arriba) aparece esto como encriptación “ed68owMLF7c=” Sabes a que se deberá la diferencia?

    Gracias

  9. Diego dijo:

    Buenas, utilizo android studio 2.1.1 y imortando la libreria y aun asi no m reconose el Base64 al importar ni el encodeBase64().

  10. Diego dijo:

    Ya resolví mi problema, pero ahora me surgió otro, esta vez es al desencriptar.
    en la parte de byte[] plainText = decipher.doFinal(message) salta directo al catch y como resultado me entrega el texto desencriptado como vacio.

    • Diego disculpa la demora estuve un poco ausente estos días, para poder ayudarte (si aun sigues con el problema), te pido envíes la forma en la que implementaste este código.

      Saludos

    • Hanna0 dijo:

      Diego, a mí me pasa lo mismo. Devuelve como vacío la cadena a desencriptar.
      Da error aquí: byte[] plainTex = decipher.doFinal(message);

      Encontraste solución? Gracias

  11. Diego A dijo:

    Funciona muy bien, lo único que le hice fue
    reemplazar el código de la librería de Apache
    Base64.encodeBase64(
    Base64.decodeBase64(
    por código propio de las librerías de Java java.util.Base64
    Base64.getEncoder().encode(
    Base64.getDecoder().decode(

    Anduvo a la perfección.
    Saludos.

  12. Muy buen aporte! Todo funciona a la perfeccion y me ayuda a sentirme mas seguro en mi app contra hacks!

    Mil gracias y Saludos.

  13. Miguel Cano dijo:

    Gracias por tu aporte, ayuda bastante.
    Tengo una duda, como puedo hacer que el resultado de la encriptación sea sólo letras y números?

    sin afectar al método de desencriptar, osea, poder desencriptar con ese resultado

    • Este encriptador utiliza caracteres especiales si quisieras que quite tendrias que reemplazarlos luego de que se genere el resultado, pero esto te impediría volver a recuperar la cadena inicial

  14. Jonathan Carrillo dijo:

    Amigo, tengo una duda porque cuando tratas de desencriptar una cadena (“jhon1603”) que devuelve valor encriptado (“VCkS3TRA5LW+O0q7AAidWw==”), ese valor (“VCkS3TRA5LW+O0q7AAidWw==”) se lo paso como parámetro al metodo de desencripción y debería devolver el (“jhon1603”), pero no es así… solo devuelve cadena vacía.

    Saludos,
    JUCM

  15. Maria dijo:

    Victor buenos dìas
    Tengo que realizar el encriptado y desencriptado mediante DES y AES, alguno me puede ayudar con los còdigos. Agradecerìa su valiosa ayuda.

Agregar un comentario

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

Contáctenos