首页 > 编程知识 正文

jasypt加密算法,springboot jasypt解密

时间:2023-05-06 13:02:47 阅读:274210 作者:2005

jasypt由于其使用的是PBEWithMD5AndDES加密方式,所以每次加密出来的结果都不一样,所以很适合对数据进行加密

没什么好说的了,直接看demo。

基本操作 添加依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>1.16</version></dependency> application.properties中配置跟秘钥 # 配置文件项加解密密码,此处作为测试完,实际情况应该注释,而放在代码中(放在代码中使加密密钥和密文分开)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;@Testpublic 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

所以在配置文件中配置密码等敏感字段时,我们可以先加密,配置密文上去,然后使用这个算法解密出来明文使用。
其他非对称高级算法参考 。

应用 在application.properties文件中增加配置项,需要jasypt来解密的密文需要用“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) 程序启动类,默认jasypt的密钥是放在配置文件中但这样会导致密文和密钥都在配置文件中,所以我把密钥放在程序中: 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;} 编写controller来调用一下: @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; } 测试结果,可见结果却是将加密文件解密出来了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。