第十九章、Jasypt加密
Jasypt全称是Java Simplified Encryption,是一个开源项目。
Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行时解密这些信息。
可以使用**jasypt-spring-boot-starter这个依赖项。从而实现属性源的加密和解密功能。另外,还可以使用 @EnableEncryptableProperties**注解来启用整个Spring环境中的可加密属性。
除了使用starter之外,还可以通过添加**@EncryptablePropertySource注解来声明单独的可加密属性源,或者使用自定义的 ConfigurableEnvironment**类来实现加密属性的启用。
- 
加密原理 
- 
引入依赖 xml<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.5</version> </dependency>
- 
配置 yamljasypt: encryptor: algorithm: PBEWITHHMACSHA512ANDAES_256 #默认指定加密算法 password: 123456 # 指定密钥:-Djasypt.encryptorpassword=123456
- 
加密 java@Autowired private StringEncryptor stringEncryptor; @Test public void testSecret() { //加密 String secret = stringEncryptor.encrypt("root"); System.out.println("secret = "+ secret); } 得到"root"加密后的字符串 
- 
解密 java@Test public 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(加密后的密码) yamlmysql: 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)下一章:Spring Boot学习随笔- 集成MyBatis-Plus,第一个MP程序(环境搭建、@TableName、@TableId、@TableField示例)