学习视频:【编程不良人】2021年SpringBoot最新最全教程

第十九章、Jasypt加密

Jasypt全称是Java Simplified Encryption,是一个开源项目。

Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行时解密这些信息。

可以使用jasypt-spring-boot-starter这个依赖项。从而实现属性源的加密和解密功能。另外,还可以使用@EnableEncryptableProperties注解来启用整个Spring环境中的可加密属性。

除了使用starter之外,还可以通过添加@EncryptablePropertySource注解来声明单独的可加密属性源,或者使用自定义的ConfigurableEnvironment类来实现加密属性的启用。

  • 加密原理

  • 引入依赖

        com.github.ulisesbocchio    jasypt-spring-boot-starter    3.0.5
  • 配置

    jasypt:  encryptor:    algorithm: PBEWITHHMACSHA512ANDAES_256 #默认指定加密算法    password: 123456 # 指定密钥:-Djasypt.encryptorpassword=123456
  • 加密

    @Autowiredprivate StringEncryptor stringEncryptor;@Testpublic void testSecret() {    //加密    String secret = stringEncryptor.encrypt("root");    System.out.println("secret = "+ secret);}

    得到”root”加密后的字符串

  • 解密

    @Testpublic void testSecret() {    // 解密  输入获取的加密字符串进行解密    String decrypt = stringEncryptor.decrypt("AFag9CUGUtX3ztEMirgaiKzwSy4d8jRDdrXwci+pCLfep2E6Hcl/vDz+6+YB46dm");    System.out.println("decrypt = " + decrypt);}

  • 解密原理

    配置文件中的jasypt.encryptor.password 是密钥,密钥可以随便设置,解密方法就是依靠密钥才能实现的,否则解密失败,密钥一般不放在配置文件中,而是通过vm传参加载

    **-Djasypt.encryptor.password=zxckqwe**

    jar包 加载密钥的方式:将参数放在-jar的后面

  • 数据库连接,主机名、用户名和密码填:ENC(加密后的密码)

    mysql:  host: ENC(d8CPj1+lGSxYqPv/sAbL9Sn8YxVEqNcEx8aRMKf3G3v76IGlbfI9+lCESQ7QLDtN)datasource:  type: com.alibaba.druid.pool.DruidDataSource  driver-class-name: com.mysql.cj.jdbc.Driver  url: jdbc:mysql://${mysql.host}:3306/ems?characterEncoding=UTF-8  username: ENC(DZKipHxtCFm3zsNq0rcPv0BhpQEPv/xlz+VD8GMOekznEDokVIvxtT2aAIqNoiNl)  password: ENC(e453fFe9wzx4+WA4Lasg30rpS70iqyW68j+y8M6cpMIePiWfS5wBanzkk+C3GbXQ)

作者:扬眉剑出鞘
出处: https://www.cnblogs.com/eyewink/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。