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

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

第十九章、Jasypt加密

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

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

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

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

  • 加密原理

  • 引入依赖

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

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

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

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

  • 解密

    java 复制代码
    @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(加密后的密码)

    yaml 复制代码
    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 Boot学习随笔- 集成MyBatis-Plus,第一个MP程序(环境搭建、@TableName、@TableId、@TableField示例)

相关推荐
一起努力啊~1 分钟前
算法题打卡力扣第1658题:将 x 减到 0 的最小操作数(mid)
学习·leetcode
雪芽蓝域zzs2 分钟前
第 4 章:Postman 安装与基础使用
spring boot
梦想平凡3 分钟前
情怀棋牌源代码焕新记录(一):全新国风UI与原版工程梳理
java·服务器·数据库·websocket·网络协议·cocos2d
传奇开心果编程4 分钟前
【ArkUI 练中学】第1课:从零开始
学习·华为·前端框架
cspttty5 分钟前
FP&A应届岗技能路线:Excel建模、SQL取数、BI看板与预算分析
大数据·数据库
binqian7 分钟前
【java】Java 两种锁机制与线程阻塞唤醒原理
jvm·spring boot·spring
j7~10 分钟前
【C++微服务项目开发脚手架】(准备篇)从 0 到跑通:Docker 容器开发环境 + 宿主机用户 + Trae 远程连接 全链路踩坑实战
linux·c++·学习·xshell·docker容器·trae
Gyr019 分钟前
浅刷了一遍51CTO软考题库客观题及其解析(5)
学习·软考·知识点·信息安全工程师
微学AI24 分钟前
飞牛 NAS 部署 prompts.chat:自建提示词库、导入社区内容,再配置固定公网访问
数据库·内网穿透
羑悻的小杀马特26 分钟前
从写 YAML 到集群自愈:KES-Operator 把 KES 集群接进 Kubernetes 原生体系
运维·数据库·容器·kubernetes