Cifrado de contraseñas en Spring-Boot con Jasypt
Jasypt se trata de una herramienta de cifrado simplificado de Java. Te permite agregar funciones básicas de cifrado a los proyectos sin mucha complejidad.
Un ejemplo de uso muy sencillo con Spring-Boot, sería tal que así:
1 – Incorporamos la dependencia al pom.xml.
com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.4
2 – Podemos incorporar el plugin de maven para jasypt que nos va permitir ejecutarlo via mvn.
com.github.ulisesbocchio jasypt-maven-plugin 3.0.4
# Encriptamos 'theValueYouWantToEncrypt' con la contraseña 'the password' mvn jasypt:encrypt-value -Djasypt.encryptor.password="the password" -Djasypt.plugin.value="theValueYouWantToEncrypt" [INFO] ENC(MQoklieA16Tq1gTsyuaGm63ii3skRWMaWyAyObD8Ca7Nqx/SouDq3J4HigJUKDn90xxMIrZQmoQ7hDW7HjNDaQ==) [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.361 s [INFO] Finished at: 2022-03-04T08:11:23-08:00 [INFO] ------------------------------------------------------------------------ # Desencriptamos la clave 'MQoklieA16Tq1gTsyuaGm63ii3skRWMaWyAyObD8Ca7Nqx/SouDq3J4HigJUKDn90xxMIrZQmoQ7hDW7HjNDaQ==' con la contraseña 'the password' mvn jasypt:decrypt-value -Djasypt.encryptor.password="the password" -Djasypt.plugin.value="MQoklieA16Tq1gTsyuaGm63ii3skRWMaWyAyObD8Ca7Nqx/SouDq3J4HigJUKDn90xxMIrZQmoQ7hDW7HjNDaQ==" [INFO] theValueYouWantToEncrypt [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.801 s [INFO] Finished at: 2022-03-04T08:12:45-08:00 [INFO] ------------------------------------------------------------------------
3 – Configuración
Jasypt tiene una serie de propiedades para su configuración. Todas tienen un valor por defecto a excepción de jasypt.encryptor.password que contiene la contraseña que se va utilizar para la encriptación.
Por otro lado, a las propiedades encriptadas se les debe poner como valor el prefijo ENC( y el sufijo ) (esto también es configurable).
Para un ejemplo sencillo voy definir unicamente en el application.properties la password de encriptación y la propiedad encriptada:
jasypt.encryptor.password=the password prop.encrypt=ENC(m2laknHcOeMybfARtNAPY6E8490/XBNFovqcaX1cvlcNt+roju7RF0IaE1XByYTKXxfQD39F5e/UfYBHLyWjwA==)
3 – Test de prueba
@SpringBootTest @EnableEncryptableProperties class ExampleJasyptApplicationTests { @Autowired Environment environment; @Test void encryption_test() { assertEquals( "theValueYouWantToEncrypt", environment.getProperty("prop.encrypt")); } }
Categorias
- adobe (2)
- agile (1)
- Alfresco (1)
- Android (26)
- Angular (6)
- angularjs (10)
- apache (1)
- axis (2)
- Bases de datos (14)
- Bootstrap (1)
- C# (3)
- Cámara (1)
- chrome (3)
- Codeigniter (2)
- Control de Versiones (2)
- CSS (25)
- CVS (1)
- Django (9)
- Django Rest Framework (1)
- DNS (1)
- Docker (3)
- dominio (1)
- eclipse (5)
- Entity Framework (2)
- ETL (1)
- Firefox (6)
- flash (1)
- freecad (1)
- Git (12)
- GitHub (4)
- gpg (2)
- Groovy (1)
- Handlebars (1)
- hibernate (4)
- hosting (1)
- HTML (50)
- HTML 5 (26)
- Impresión 3D (9)
- Inkscape (1)
- IOS (2)
- ireports (3)
- Java (44)
- Javascript (55)
- JBoss (5)
- JPA (2)
- JQuery (20)
- Json (7)
- JSP (6)
- Keycloak (1)
- Lamp (1)
- LDAP (2)
- lean (1)
- linkedin (1)
- LINQ (1)
- linux (13)
- Livecycle (1)
- log (1)
- microcontroladores (1)
- MongoDB (4)
- MySQL (8)
- Node.js (5)
- OC4J (1)
- Openshift (2)
- Oracle (6)
- Patrones de Diseño (1)
- Photoshop (2)
- php (20)
- PostgreSQL (1)
- python (19)
- rabbitmq (1)
- Raspberry PI (13)
- Raspherry PI (5)
- React (6)
- seguridad (3)
- Selenium (3)
- Sencha Touch (1)
- Sin categoría (29)
- Spring (17)
- spring-boot (3)
- SQL (7)
- SQLServer (1)
- SSO (1)
- struts (2)
- SVN (1)
- Talend (1)
- Tomcat (6)
- unity (3)
- Visual Studio Code (2)
- vmware (5)
- Web Services (11)
- windows (18)
- wordpress (10)
- Xiaomi (1)
- xml (2)
Trabajos Realizados
- App Android – Autoka Fr
- App Android – Cartelera Cántabra
- App Android – Gramática y Vocabulario Ingles
- App Android – Hoja de Gastos
- App Android – Hotel Torre Cristina
- App Android – OcioEnjoy
- App Android – Visor CardBoard
- App Firefox – Managapp
- DiamanteBomba – DisasterCode
- Generador de Partes de Trabajo
- GitHub – Android Web Generator
- GitHub – Dynamic Angular Gallery
- GitHub – Dynamic React Gallery
- GitHub – Sotilizator
- GitHub – SpringAngularJS
- GitHub – Swiper Dynamic Angular Gallery
- HazParejas – DisasterCode
- RompeCabezas – DisasterCode
- Unity Game – English Couple
- Unity Game – Kill Wasp
- WordPress – El Buen Apicultor
- WordPress – El Cajón de los Retales
- WordPress – El Vestidito Azul
- WordPress – Feuchas
- WordPress – Fragua de Navajas Ponce
- WordPress – Humor a las Tres
- WordPress – Photo Places