⚡️项目提交远程仓库,数据库等
敏感数据
怎么规避暴露出去?🌋环境:jdk1.8,SpringBoot2.7x,IDEA2023.1.3
💃本文共
1365
字,预计阅读5
分钟
一、jayspt介绍
jasypt是一个轻量的Java库,它允许开发人员以最小的努力为项目添加基本的加密功能,而无需深入了解密码学的工作原理。
省流:轻量,快速,Java库
二、jasypt特性
- 提供简单的单向和双向加密
- 为密码提供一定的安全性
- 完全的线程安全
- ……
三、jasypt应用
-
引入依赖(下方有maven地址,建议安装使用人次多的,而不是最新的)
<!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.5</version> </dependency>
这里需要注意加密的类型
2.1.2版本默认加密方式为:PBEWithMD5AndDES 3.0.3版本默认加密方式为:PBEWITHHMACSHA512ANDAES_256
-
yml中配置
jasypt: encryptor: # password就是盐值 password: 123123 # 解密前缀 默认是ENC() prefix: "Y[" suffix: "]"
-
生成密文(测试类中)
@Autowired private StringEncryptor stringEncryptor; @Test void testJayspy() { String username = stringEncryptor.encrypt("root"); String password = stringEncryptor.encrypt("password"); log.info("username 密文: " + username); log.info("password 密文: " + password); }
得到密文配置到yml文件中
-
yml中敏感数据解密
spring: application: name: xxx-backend datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/yovvis username: ENC(usename 密文) password: ENC(password 密文)
-
两种方法获得正确的明文密码
-
保留yml中jasypt配置(虽然可以直接启动项目,但是属于掩耳盗铃,因为密钥暴露在配置里)
-
删除jasypt添加虚拟机参数
-Djasypt.encryptor.password="xxxx"
-
最终,配置文件中只能看到密文,在项目启动时进行解密,这样的配置文件提交到远程仓库,你爱了嘛⭐️