jasypt库的使用[通俗易懂]

jasypt库的使用[通俗易懂]jasypt 库的使用 1 简介 Jasypt 是一个 Java 简易加密库 用于加密配置文件中的敏感信息 如数据库密码 jasypt 库与 springboot 集成 在实际开发中非常方便 2 添加依赖 jasypt 开发者开发了 starter 添加 jasypt spring boot starter 依赖就可以了 该库中有使用到 slf4j 依赖 若单独测试 需添加相应依赖

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>

编程小号
上一篇 2025-01-26 11:51
下一篇 2025-01-26 21:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/146654.html