jasypt库的使用
1.简介
Jasypt是一个Java简易加密库,用于加密配置文件中的敏感信息,如数据库密码。jasypt库与springboot集成,在实际开发中非常方便。
2.添加依赖
jasypt开发者开发了starter,添加jasypt-spring-boot-starter依赖就可以了。该库中有使用到slf4j依赖,若单独测试,需添加相应依赖,或直接添加spring-boot-starter依赖。
com.github.ulisesbocchio
jasypt-spring-boot-starter
2.1.0
/pre>
h3>3.添加注解
/h3>
p>在Application应用类上添加注解
/p>
blockquote>@EnableEncryptableProperties
启用jasypt。
/blockquote>
h3>4.配置使用
/h3>
p>将加密后的配置信息使用ENC函数,添加到配置文件中,应用启动加载配置文件时,会自动解密。
Jasypt默认使用的算法为PBEWithMD5AndDES,该算法需要一个加密密钥,可以在应用启动时指定。也可以直接写入配置文件,安全性稍差。
/p>
pre class='language-javascript'>
jasypt:
encryptor:
password: password/pre>
h3>5.测试示例
/h3>
h4>5.1 准备工作
/h4>
p>添加依赖,应用类添加注解。
/p>
h4>5.2 添加加密后的属性配置
/h4>
p>在配置文件中加入加密后的属性配置信息,我们加密了字符串Password@1,使用的加密密钥为password,添加到application.yml文件中。
/p>
pre class='language-javascript'>
jasypt:
encryptor:
password: password
encrypted:
property: ENC(uTSqb9grs1+vUv3iN8lItC0kl65lMG+8)/pre>
h4>5.3 添加属性解析类
/h4>
p>添加一个类,加载配置文件中的配置信息。
/p>
pre class='language-javascript'>
@Service
public class PropertyServiceForJasyptStarter {
@Value("${encrypted.property}")
private String property;
public String getProperty() {
return property;
}
public String getPasswordUsingEnvironment(Environment environment) {
return environment.getProperty("encrypted.property");
}
}/pre>
h4>5.4 添加测试函数
/h4>
pre class='language-javascript'>
@RunWith(SpringRunner.class)
@SpringBootTest
public class JasyptSimpleIntegrationTest {
@Autowired
PropertyServiceForJasyptStarter service;
@Autowired
Environment environment;
@Test
public void whenDecryptedPasswordNeeded_GetFromService() {
System.out.println("service.getProperty() = " + service.getProperty());
System.out.println("service = " + service.getPasswordUsingEnvironment(environment));
}
/** * 生成加密密文 * 每次加密后密文不一样 */
@Test
public void testPBECli(){
String[] args = {
"input='Password@1",
"password=password", "algorithm=PBEWithMD5AndDES"};
JasyptPBEStringEncryptionCLI.main(args);
}
}/pre>
p>执行结果如下:
/p>
blockquote>service.getProperty() = Password@1
service = Password@1
/blockquote>
h3>6、加密函数
/h3>
pre class='language-javascript'>
public static void main(String[] args) {
// 创建加密对象,默认 PBEWithMD5AndDES
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
// 加密所需的密钥
textEncryptor.setPassword("password");
// 加密后的数据(数据库的用户名或密码)
String encData = textEncryptor.encrypt("Password@1");
// 解密后的数据(原数据)
String decData = textEncryptor.decrypt(encData);
System.out.println("encData: " + encData);
System.out.println("decData: " + decData);
}/pre>
p>输出:
/p>
blockquote>encData: uK6xyed60q9NlSBAVb0pFyxA23TYFgtQ
decData: Password@1
/blockquote>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/146654.html