首页 > 数据库 >Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

时间:2023-12-28 23:56:21浏览次数:45  
标签:加密 Spring mysql Boot 解密 密钥 Jasypt password

学习视频:【编程不良人】2021年SpringBoot最新最全教程

第十九章、Jasypt加密

Jasypt全称是Java Simplified Encryption,是一个开源项目。

Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行时解密这些信息。

可以使用jasypt-spring-boot-starter这个依赖项。从而实现属性源的加密和解密功能。另外,还可以使用@EnableEncryptableProperties注解来启用整个Spring环境中的可加密属性。

除了使用starter之外,还可以通过添加@EncryptablePropertySource注解来声明单独的可加密属性源,或者使用自定义的ConfigurableEnvironment类来实现加密属性的启用。

  • 加密原理

  • 引入依赖

    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.5</version>
    </dependency>
    
  • 配置

    jasypt:
      encryptor:
        algorithm: PBEWITHHMACSHA512ANDAES_256 #默认指定加密算法
        password: 123456 # 指定密钥:-Djasypt.encryptorpassword=123456
    
  • 加密

    @Autowired
    private StringEncryptor stringEncryptor;
    
    @Test
    public void testSecret() {
        //加密
        String secret = stringEncryptor.encrypt("root");
        System.out.println("secret = "+ secret);
    }
    

    得到”root”加密后的字符串

  • 解密

    @Test
    public void testSecret() {
        // 解密  输入获取的加密字符串进行解密
        String decrypt = stringEncryptor.decrypt("AFag9CUGUtX3ztEMirgaiKzwSy4d8jRDdrXwci+pCLfep2E6Hcl/vDz+6+YB46dm");
        System.out.println("decrypt = " + decrypt);
    }
    

  • 解密原理

    配置文件中的jasypt.encryptor.password 是密钥,密钥可以随便设置,解密方法就是依靠密钥才能实现的,否则解密失败,密钥一般不放在配置文件中,而是通过vm传参加载

    **-Djasypt.encryptor.password=zxckqwe**

    jar包 加载密钥的方式:将参数放在-jar的后面

  • 数据库连接,主机名、用户名和密码填:ENC(加密后的密码)

    mysql:
      host: ENC(d8CPj1+lGSxYqPv/sAbL9Sn8YxVEqNcEx8aRMKf3G3v76IGlbfI9+lCESQ7QLDtN)
    
    datasource:
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://${mysql.host}:3306/ems?characterEncoding=UTF-8
      username: ENC(DZKipHxtCFm3zsNq0rcPv0BhpQEPv/xlz+VD8GMOekznEDokVIvxtT2aAIqNoiNl)
      password: ENC(e453fFe9wzx4+WA4Lasg30rpS70iqyW68j+y8M6cpMIePiWfS5wBanzkk+C3GbXQ)
    

标签:加密,Spring,mysql,Boot,解密,密钥,Jasypt,password
From: https://www.cnblogs.com/eyewink/p/17933845.html

相关文章

  • Spring Validated 校验
    Spring的校验框架是通过@Validated注解和JSR303(BeanValidation)规范实现的。它提供了一种方便的方式来验证方法参数和对象属性的有效性。下面是使用Spring校验框架的几个关键概念和用法:注解@Validated:@Validated注解用于标记需要进行校验的类或方法。它可以放在类级别,在方法参数上......
  • Java Spring Boot Mybatis-Plus 的简单使用
    此文主要基于官网case整理,如需了解更多详情,请移步官网。环境:SpringBoot:3.1.6JDK:17MySQL:5.7数据准备主要是MySQL建库建表,插入一些数据。建库:CREATEDATABASEmybatis_demo;建表:DROPTABLEIFEXISTS`user`;CREATETABLE`user`(idBIGINTNOTNULLCOMME......
  • Spring BeanFactoryAware 解决 prototype 作用域失效问题
    跟着孙哥学Spring,b站:https://www.bilibili.com/video/BV185411477k/?spm_id_from=333.337.search-card.all.click在Spring中,如果一个singletonbean依赖了一个prototypebean,那么这个prototypebean在初始化时只会被创建一次,这就是所谓的"prototypescope失效"的问题......
  • RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及消费收发实战
    欢迎关注公众号:【11来了】发送“资料”可以下载Redis、JVM系列文章PDF版本!作者为在读研究生,目前研二,计划在公众号记录学习常用中间件笔记,以及明年更新面试经历!SpringCloudAlibaba集成RocketMQ最佳实践SpringBoot相对于SSM来说已经很大程度上简化了开发,但是使用SpringBo......
  • Maven插件系列之spring-boot-maven-plugin
    SpringBoot的Maven插件(SpringBootMavenplugin)能够以Maven的方式为应用提供SpringBoot的支持,即为SpringBoot应用提供了执行Maven操作的可能。SpringBootMavenplugin能够将SpringBoot应用打包为可执行的jar或war文件,然后以通常的方式运行SpringBoot应用。SpringBootMave......
  • springcloud动力节点-01Eureka
    SpringCloudEureka1.SpringCloudEureka简介注册发现中心Eureka来源于古希腊词汇,意为“发现了”。在软件领域,Eureka是Netflix在线影片公司开源的一个服务注册与发现的组件,和其他Netflix公司的服务组件(例如负载均衡、熔断器、网关等)一起,被SpringCloud社区整合......
  • springcloud动力节点-05Sleuth
    SpringCloudSleuth1.什么是链路追踪官网:https://spring.io/projects/spring-cloud-sleuth链路追踪就是:追踪微服务的调用路径2.链路追踪的由来在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个请求都会开成一......
  • springcloud动力节点-04Hystrix
    SpringCloudHystrix1.前言1.1什么是服务雪崩   服务雪崩的本质:线程没有及时回收。不管是调用成功还是失败,只要线程可以及时回收,就可以解决服务雪崩1.2服务雪崩怎么解决1.2.1修改调用的超时时长(不推荐)将服务间的调用超时时长改小,这样就可以让线程及时回收,保证服......
  • springcloud动力节点-03OpenFeign
    SpringCloudOpenFeign 1.说在前面上一节我们讲到Ribbon做了负载均衡,用Eureka-Client来做服务发现,通过RestTemplate来完成服务调用,但是这都不是我们的终极方案,终极方案是使用OpenFeign2.OpenFeign简介https://docs.spring.io/spring-cloud-open......
  • Spring Cloud动力节点-07Alibaba简介、注册、配置中心
    1.项目简介SpringCloudAlibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务。依托SpringCloudAlibaba,您只需要添加一些注解和少量配置,就可以将SpringClo......