ToB企服应用市场:ToB评测及商务社交产业平台

标题: 使用jasypt对springboot配置信息加密 [打印本页]

作者: 道家人    时间: 2024-1-7 23:55
标题: 使用jasypt对springboot配置信息加密
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

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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4