当前位置:   article > 正文

SpringBoot集成jasypt

springboot集成jasypt

一. jasypt介绍

Jasypt(Java Simplified Encryption)是一个Java库,它允许开发人员以最小的努力为项目添加基本的加密功能,而无需深入了解密码学的工作原理。

  • 基于标准的高安全性加密技术,适用于单向和双向加密。加密密码,文本,数字,二进制文件...
  • 与 Hibernate 的透明集成。
  • 适合集成到基于 Spring 的应用程序中,也可以透明地与 Spring 安全性集成。
  • 用于加密应用程序(即数据源)配置的集成功能。
  • 多处理器/多核系统中高性能加密的特定功能。
  • 开放 API 以与任何 JCE 提供程序一起使用。

官网:http://www.jasypt.org/

二. SpringBoot项目中集成jasypt

  1. 基本用法

2.1 导入jar

  1. <dependency>
  2. <groupId>com.github.ulisesbocchio</groupId>
  3. <artifactId>jasypt-spring-boot-starter</artifactId>
  4. <version>3.0.4</version>
  5. </dependency>

2.2 修改yml配置文件

  1. jasypt:
  2. encryptor:
  3. # 加密的秘钥
  4. password: haha
  5. # 加密算法
  6. algorithm: PBEWithMD5AndDES
  7. iv-generator-classname: org.jasypt.iv.NoIvGenerator
  8. property:
  9. # 算法识别的前后缀,默认ENC(),包含在前后缀的加密信息,会使用指定算法解密
  10. prefix: Enc(
  11. suffix: )

jasypt3.0后,默认支持的算法为 PBEWITHHMACSHA512ANDAES_256 ,该算法需要JDK1.9 以上支持或者添加JCE(Java Cryptography Extension 无限强度权限策略文件)支持。本例使用PBEWithMD5AndDES算法。

2.3 生成加密后的数据

  1. public class JasyptUtils {
  2. public static void main(String[] args) {
  3. String info = encrypt("root");
  4. System.out.println("加密后:" + info);
  5. String decrypt = decrypt(info);
  6. System.out.println("解密后:" + decrypt);
  7. }
  8. /**
  9. * 加密
  10. *
  11. * @param plaintext 明文
  12. * @return
  13. */
  14. public static String encrypt(String plaintext) {
  15. StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
  16. EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
  17. // 指定算法
  18. config.setAlgorithm("PBEWithMD5AndDES");
  19. // 指定秘钥,和yml配置文件中保持一致
  20. config.setPassword("haha");
  21. encryptor.setConfig(config);
  22. // 生成加密数据
  23. return encryptor.encrypt(plaintext);
  24. }
  25. /**
  26. * 解密
  27. *
  28. * @param data 加密后数据
  29. * @return
  30. */
  31. public static String decrypt(String data) {
  32. StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
  33. EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
  34. config.setAlgorithm("PBEWithMD5AndDES");
  35. config.setPassword("haha");
  36. encryptor.setConfig(config);
  37. // 解密数据
  38. return encryptor.decrypt(data);
  39. }
  40. }

执行加密算法,加密后数据如下图所示:

替换yml中数据库的密码:

  1. 秘钥处理

将加密密码以明文形式写在配置文件中并不安全,实际开发中也不推荐这样使用。我们使用idea测试时,可以进行如下设置:

如果打包后部署项目,可以使用如下命令在启动项目时指定秘钥:

  1. #方式1
  2. java -jar xxx.jar -Djasypt.encryptor.password=加密数据的秘钥
  3. #方式2
  4. java -jar xxx.jar --jasypt.encryptor.password=加密数据的秘钥
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/945675
推荐阅读
相关标签
  

闽ICP备14008679号