1.引用jar包
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
2.在application.yml文件中加入配置信息
#數據庫配置文件加密
jasypt:
encryptor:
## 實現jasypt加密解密的類
bean: desencrypt
對數據庫密碼加密,使用 ENC() 包裹起來,然后里面放置密文
###################################################
# 數據庫配置 #
###################################################
# 數據庫驅動
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
# 數據庫鏈接
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
# 數據庫用戶名
spring.datasource.username=NR
# 數據庫密碼
spring.datasource.password=ENC(TLI=)
# 數據源連接池中最大連接數
spring.datasource.hikari.maximum-pool-size=50
3.加密解密類
import gov.cnao.security.service.EncryptDecryptService;
import gov.cnao.security.service.impl.EncryptDecryptServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jasypt.encryption.StringEncryptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component("desencrypt")
public class NrStringEncryptor implements StringEncryptor {
private static Logger logger = LoggerFactory.getLogger(NrStringEncryptor.class);
private EncryptDecryptService encryptDecryptService = new EncryptDecryptServiceImpl();
@Override
public String encrypt(String message) {
if (StringUtils.isNotBlank(message)){
try {
logger.info("加密前密碼:"+message);
message = encryptDecryptService.encrypt(message);
logger.info("加密后密碼:"+message);
logger.info("配置信息加密成功!");
} catch (Exception e) {
logger.error("配置信息加密失敗!");
}
}
return message;
}
@Override
public String decrypt(String encryptedMessage) {
if (StringUtils.isNotBlank(encryptedMessage)){
try {
logger.info("解密前密碼:"+encryptedMessage);
encryptedMessage = encryptDecryptService.decrypt(encryptedMessage);
logger.info("解密后密碼:"+encryptedMessage);
logger.info("配置信息解密成功!");
} catch (Exception e) {
logger.error("配置信息解密失敗!");
}
}
return encryptedMessage;
}
}
4. 自定義加密算法