使用jasypt对springboot配置信息加密

打印 上一主题 下一主题

主题 931|帖子 931|积分 2793

1.pom文件增加依赖
  1.         <dependency>
  2.                         <groupId>com.github.ulisesbocchio</groupId>
  3.                         <artifactId>jasypt-spring-boot-starter</artifactId>
  4.                         <version>3.0.5</version>
  5.                 </dependency>
复制代码
2.修改启动类增加StringEncryptor实现

jasypt密码可以放到配置文件或者启动命令中,与其这样不如直接写到代码里
  1.     @Primary
  2.     @Bean("jasyptStringEncryptor")
  3.     public StringEncryptor stringEncryptor() {
  4.         PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
  5.         SimpleStringPBEConfig config = new SimpleStringPBEConfig();
  6.         config.setPassword("xxxx");//这里改成你的密码
  7.         config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
  8.         config.setKeyObtentionIterations("1000");
  9.         config.setPoolSize("1");
  10.         config.setProviderName("SunJCE");
  11.         config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
  12.         config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
  13.         config.setStringOutputType("base64");
  14.         encryptor.setConfig(config);
  15.         return encryptor;
  16.     }
复制代码
注意:上面的@Primary 注解必须加上,覆盖默认实现。
3.本地写一个加密类,对你要加密的敏感信息加密
  1. import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
  2. import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
  3. public class JasyptTest {
  4.         public static void main(String[] args) {
  5.                 PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
  6.         SimpleStringPBEConfig config = new SimpleStringPBEConfig();
  7.         config.setPassword("xxxx");//改成你的密码
  8.         config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
  9.         config.setKeyObtentionIterations("1000");
  10.         config.setPoolSize("1");
  11.         config.setProviderName("SunJCE");
  12.         config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
  13.         config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
  14.         config.setStringOutputType("base64");
  15.         encryptor.setConfig(config);
  16.         
  17.         String originStr = "xxxx" ;//原始字符串
  18.         String encStr = encryptor.encrypt(originStr);
  19.         System.out.println("originStr encrypt is {}"+ encStr);//加密后的字符串,这个贴到配置文件中
  20.         System.out.println("originStr is {}"+ encryptor.decrypt(encStr));//验证一下解密
  21.         }
  22. }
复制代码
4.修改配置文件

将加密后的信息用前面用 ENC( ) 包起来
例如:
原始配置:
  1. spring.datascoure.password=yourpassword
复制代码
改成:
  1. spring.datascoure.password=ENC(JL2t1CZpj+cTQ30IFKu0lkoZCVpYbVIhLm1MRbBpaNI])
复制代码
(完)
参考:
[1] https://zhuanlan.zhihu.com/p/480828512
[2] https://github.com/ulisesbocchio/jasypt-spring-boot
source: https://wangxuan.me/tech/2023/11/23/use-jasypt-to-encrypt-configs.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表