Jasypt加密
1 引包
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
2 配置密钥
applicaption.yml文件
# 加解密密钥
jasypt:
encryptor:
password: Qzeng
3 获取到数据库密码加密字符串
import org.jasypt.encryption.StringEncryptor;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class JasyptTest {
@Autowired
private StringEncryptor stringEncryptor;
@Test
public void testEncrypt() {
String s1 = "captain@123";
String encrypt = stringEncryptor.encrypt(s1);
// TmRoVuF2sNclOAzFZ6Ke6zADk/MicQ0LTBF/5kOCM7kjdl1/AWiWBLMTS0gqajob
System.out.println("encrypt=" + encrypt);
}
@Test
public void testDecrypt() {
String s1 = "TmRoVuF2sNclOAzFZ6Ke6zADk/MicQ0LTBF/5kOCM7kjdl1/AWiWBLMTS0gqajob";
String decrypt = stringEncryptor.decrypt(s1);
// captain@123
System.out.println("decrypt=" + decrypt);
}
}
4 配置数据源的密码为加密字符串
配置格式: ENC(加密字符串)
解密说明: jasypt-spring-boot-starter框架会对配置在applicaption.yml文件中: ENC(加密字符串) 加载到内存中时进行自动解密
applicaption.yml文件
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/qzeng?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: captain
password: ENC(TmRoVuF2sNclOAzFZ6Ke6zADk/MicQ0LTBF/5kOCM7kjdl1/AWiWBLMTS0gqajob)
------------------------------------------------------------------------------------------------------------------------------------------------------
# 加盐cmd命令加解密方式
# 加解密密钥
jasypt:
encryptor:
provider-class-name: org.bouncycastle.jce.provider.BouncyCastleProvider
# 加密的salt
password: cmd
algorithm: PBEWithSHAAnd3-KeyTripleDES-CBC
iv-generator-classname: org.jasypt.iv.NoIvGenerator
备注: apollo中密码加密配置 在执行加解密命令的目录放2个jar包 : jasypt-1.9.3.jar bcprov-jdk15on-1.65.jar
加密密码命令: java -cp jasypt-1.9.3.jar;bcprov-jdk15on-1.65.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="原始密码" password="加密的salt " algorithm=PBEWithSHAAnd3-KeyTripleDES-CBC providerClassName="org.bouncycastle.jce.provider.BouncyCastleProvider"
解密密码命令: java -cp jasypt-1.9.3.jar;bcprov-jdk15on-1.65.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="已加密的密码" password="加密的salt " algorithm=PBEWithSHAAnd3-KeyTripleDES-CBC providerClassName="org.bouncycastle.jce.provider.BouncyCastleProvider"
apollo的密码配置为: ENC(加密密码)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix