jasypt由于其使用的是PBEWithMD5AndDES加密方式,所以每次加密出来的结果都不一样,所以很适合对数据进行加密
没什么好说的了,直接看demo。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.16</version>
</dependency>
# 配置文件项加解密密码,此处作为测试完,实际情况应该注释,而放在代码中(放在代码中使加密密钥和密文分开)
jasypt.encryptor.password: demo
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(classes = JasyptApplication.class)
public class JasyptApplicationTests {
@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("uaNBj4ZmzCD83uedRYUXqQ=="));
System.out.println(stringEncryptor.decrypt("oKBQENfbbQiMyPvECAgPGA=="));
}
}
运行测试结果如下,可以看到,每次加密产生的密文都不一样,然后不一样的密文解密产生的结果是一样的。密文只有对应的跟秘钥才能解析出来明文,不然会抛错org.jasypt.exceptions.EncryptionOperationNotPossibleException
所以在配置文件中配置密码等敏感字段时,我们可以先加密,配置密文上去,然后使用这个算法解密出来明文使用。 其他非对称高级算法参考 。
“ENC(......)”
括起来。# 配置文件项加解密密码,此处作为测试完,实际情况应该注释,而放在代码中(放在代码中使加密密钥和密文分开)
#jasypt.encryptor.password: demo
# 旺店通配置参数
wangdian.sellerId=ENC(aJX3jlTcd/vAx1UAB6h5bw==)
wangdian.interfaceId=ENC(HcCmriYEyZAdJpbFfLhLKCYoW9cnbQwh)
wangdian.key=ENC(1hTTyI3puyGelRZvumOAJfML3xPKZPgfx4RtJi5rse0VEZUxFzSUBgQNA8b2tzK3)
wangdian.baseUrl=ENC(7Szvrmcnj9YZNizvJMOWxJ+USsvFRc+jnjrr7Mf7EhrM3njOJjmKoOOYGUkZZkMloOgsCD4gDJY=)
# 用友(快递查询)配置参数
yonyou.apicode=ENC(ljmI7p6GFfQEctm7heVX7fcrmzT/YT67XddJDsEbYV8/wOuZRglvz79jekSrv+Z/)
yonyou.url=ENC(wjlJlV2cejA8oZQJCHFajfJg9pTAH+WE89rwXl6lM3FrU5E1u4CnC/HPcVXLYo3lit2QNn4EGWe6I6wlO8D1nl3mGwelKj8k)
public static void main(String[] args) {
/** 配置加解密跟秘钥,与配置文件的密文分开放 */
System.setProperty("jasypt.encryptor.password", ConstantValue.JASYPT_ENCRYPTOR_PASSWORD);
SpringApplication.run(OrderApplication.class, args);
}
package com.df.dsell.order.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "wangdian")
public class WangDianConfig {
/**
* 接口KEY
*/
public String interfaceId;
/**
* 校验key
*/
public String key;
/**
* 商店标识
*/
public String sellerId;
/**
* 基址
*/
public String baseUrl;
}
@Autowired
WangDianConfig wangDianConfig;
@Autowired
YonyouConfig yonyouConfig;
@ApiOperation(value = "测试接口", notes = "测试请认真核实字段")
@ApiImplicitParams({
@ApiImplicitParam(name = "moduleName", paramType = "path", allowableValues = OrderApplication.MODULE_NAME, required = true),
@ApiImplicitParam(name = "per", paramType = "path", allowableValues = OrderApplication.PER_PB, required = true)
})
@GetMapping(value = "{per}/{moduleName}/wangDianConfig")
public WangDianConfig testGetKeyOfWangDianConfig() {
return wangDianConfig;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。