Cómo encriptar contraseñas en un proyecto Spring Boot usando Jasypt

Spring boot es un marco basado en Java para desarrollar microservicios con el fin de crear aplicaciones de nivel empresarial.

A menudo se encuentra con proyectos en desarrollo en los que tiene que conectarse a bases de datos como MongoDB , etc. y almacenar la contraseña auténtica de la conexión DB en el archivo de configuración del proyecto Spring Boot (application.yml o application.properties). Incluso las contraseñas o los tokens necesarios para la autorización para realizar otras llamadas a la API también se almacenan de la misma manera.

En realidad, puede abstenerse de agregar la contraseña real en el archivo de configuración y usar ‘ jasypt-spring-boot ‘, una biblioteca de Java. 

¿Qué es Jasypt?
Jasypt (Java Simplified Encryption) proporciona soporte de cifrado para fuentes de propiedades en aplicaciones Spring Boot. Le ayudará a agregar funciones básicas de encriptación a sus proyectos con muy pocos esfuerzos y sin escribir ningún código con la ayuda de algunas adiciones en su proyecto aquí y allá. Springboot es un marco muy poderoso que lo ayudará a agregar capacidad de encriptación sin implementar ningún método de criptografía. Jasypt es altamente configurable.

Pasos para agregar cifrado usando Jasypt: 

  1. Agregue la dependencia maven de jasypt: en el archivo pom.xml, agregue la dependencia maven que se puede encontrar fácilmente en el repositorio maven .

  2. Agregue una anotación en la clase de configuración principal de la aplicación Spring Boot: la anotación @EnableEncryptableProperties debe agregarse para que la aplicación comprenda las propiedades cifrables en todo el entorno Spring.

  3. Decida una clave secreta que se usará para el cifrado y el descifrado . La clave secreta se usa para cifrar la contraseña y luego se puede usar para descifrar el valor cifrado para obtener la contraseña real. Puede elegir cualquier valor como clave secreta.
  4. Generar clave cifrada La clave cifrada se puede generar a través de cualquiera de los dos métodos siguientes:
    1. Use la herramienta en línea Jasypt:

      Este enlace se puede utilizar para generar una clave cifrada pasando la clave secreta elegida.

      • La contraseña para cifrar : abcd1234
      • Seleccione el tipo de encriptación: Encriptación bidireccional (por defecto se usa PBEWithMD5AndDES)
      • Secret Key : hola (Puede ser cualquier valor)
      • String cifrada : kNuS1WAezYE7cph7zXVTiPSQSdHTx7Kv

      En realidad, puede usar la herramienta para cifrar y verificar la clave cifrada descifrándola.

    2. Use el jar jasypt: descargue el archivo jar jasypt del repositorio maven y ejecútelo con el siguiente comando:

      java -cp //jasypt-1.9.3/lib/jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=”xyz123″ contraseña=secretkey algoritmo=PBEWithMD5AndDES

      El siguiente es el significado de los parámetros de la línea de comandos pasados ​​para ejecutar el jar:

      • entrada : abcd1234 (contraseña real para cifrar)
      • contraseña : hola (la clave secreta elegida por usted)
      • algoritmo : PBEWithMD5AndDES (algoritmo predeterminado utilizado)
      • SALIDA : scEjemHosjc/hjA8saT7Y6uC65bs0swg (valor cifrado de entrada)

      Nota : Aunque el valor cifrado, es decir, String cifrada y SALIDA en 3.1 y 3.2 respectivamente, son diferentes, dado que la clave secreta es la misma, el descifrado dará como resultado el mismo valor (abcd1234) en ambos casos.

  5. Agregue la clave cifrada en el archivo de configuración (application.yml o application.properties): ahora, en lugar de agregar la contraseña real, es decir. «abcd1234» según lo anterior, por ejemplo, debe agregar el valor cifrado generado por cualquiera de los métodos anteriores. Pero, ¿cómo comprenderá la dependencia de jasypt que la propiedad particular del archivo de configuración debe descifrarse? Por lo tanto, para que Jasypt conozca sus valores cifrados, utiliza una convención que debe agregar en el siguiente formato:

    ENC (clave cifrada): ENC (scEjemHosjc/hjA8saT7Y6uC65bs0swg)

    En la imagen de arriba, se realiza el cifrado de la contraseña de la base de datos. Puede usarlo en cualquier escenario en el que tenga que ocultar la contraseña real.

  6. La clave secreta elegida debe pasarse para descifrar en tiempo de ejecución: informe a Jasypt de la clave secreta que ha utilizado para formar el valor cifrado. Por lo tanto, los siguientes son los diferentes métodos para pasar la clave secreta: 
    1. Pásalo como una propiedad en el archivo de configuración. Ejecute el proyecto como de costumbre y se producirá el descifrado.

    2. Ejecute el proyecto con el siguiente comando:

      $mvn-Djasypt.encryptor.password=clave secreta spring-boot:ejecutar

    3. Exportar contraseña del cifrador Jasypt:

      JASYPT_ENCRYPTOR_PASSWORD=hola

Publicación traducida automáticamente

Artículo escrito por aanchalogy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *