使用
1. 首先在pom.xml中引入相关依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2. 在properties.yaml文件中配置密钥
jasypt:
encryptor:
password: demo
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.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class JasyptApplicationTest {
@Autowired
private StringEncryptor stringEncryptor;
@Test
public void contextLoads() {
System.out.println(stringEncryptor.encrypt("123456"));
System.out.println(stringEncryptor.encrypt("123456"));
System.out.println(stringEncryptor.decrypt("43xaxZ5QSRsVNXnX+gbltQ=="));
System.out.println(stringEncryptor.decrypt("SU2SJbOmqSOnZRmu6zSxNw=="));
}
}
运行测试结果如下,可以看到,每次加密产生的密文都不一样,但是不一样的密文解密产生的结果是一样的。密文只有对应的跟秘钥才能解析出来明文,不然会抛错org.jasypt.exceptions.EncryptionOperationNotPossibleException
运行结果
使用
在properties.yaml文件中,需要jasypt来解密的密文需要用“ENC(......)”括起来。
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: ENC(43xaxZ5QSRsVNXnX+gbltQ==)