ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密
[打印本页]
作者:
大连密封材料
时间:
2024-3-6 18:17
标题:
Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密
学习视频:
【编程不良人】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)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4