SpringBoot使用Jasypt配置项加密

共 1828字,需浏览 4分钟

 ·

2021-01-12 01:34

对于一些安全性要求非常高的企业,是不允许在配置文件中配置明文密码的。因为如果在配置文件明文密码,就有可能存在被泄露的问题。如开发人员使用、严重的点的话就是被黑客盗取。


0x01:引入依赖

在pom.xml文件中引入如下依赖

 <dependency>
        <groupId>com.github.ulisesbocchiogroupId>

        <artifactId>jasypt-spring-boot-starterartifactId>
       <version>3.0.3version>
dependency>


0x02:对于需要加密的配置项进行加密

下面与数据的用户名和密码为例说明

public static void main(String[] args{
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        //加密所需的salt(盐)
        textEncryptor.setPassword("Bt%XJ^n1j8mz");
        //要加密的数据(数据库的用户名或密码)
        String username = textEncryptor.encrypt("root");
        String password = textEncryptor.encrypt("root123456");
        System.out.println("username: " + username);
        System.out.println("password:" + password);
    }

运行以上代码,将用户名和密码加密对应生成的结果复制下来,后面会用到。


0x03:application.properities配置文件配置

#数据库相关配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jasypt?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
# 加密所需的salt(盐)
#jasypt.encryptor.password=Bt%XJ^n1j8mz
# 默认加密方式PBEWithMD5AndDES,可以更改为PBEWithMD5AndTripleDES
#jasypt.encryptor.algorithm=PBEWithMD5AndDES
spring.datasource.username=ENC(d/qt1SXvttpkiugIzTYkxg==)
spring.datasource.password=ENC(rhT6VNpoRUkQYYOHAQ58V4/+fkj9CWfT)
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5


解密秘钥 jasypt.encryptor.password 也在配置文件里,别人拿到服务器上部署配置文件后,是不是也很轻松的就可以解开这个密码了?

  • 开发环境:为了防止salt(盐)泄露,反解密出密码。删除掉application.properties中的 jasypt.encryptor.password ,然后在IDE的运行参数中添加 -Djasypt.encryptor.password=Bt%XJ^n1j8mz

  • 生成部署:直接在启动的shell脚本中添加-Djasypt.encryptor.password=Bt%XJ^n1j8mz

java -jar -Djasypt.encryptor.password=Bt%XJ^n1j8mz jasyptDemo-0.0.1-SNAPSHOT.jar

喜欢,在看



浏览 50
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报