0


SpringBoot 项目配置数据库密码加密

一、说明

我们在写Springboot项目时候,配置文件中需要配置数据库连接,用户名和密码都是明文配置的。这样做很不安全,容易密码泄露。

二、加密方案

1、加密方案有好多种,下来介绍一种本人用的,比较简单的加密方法。
2、使用说明:
使用密码加密工具类,生成加密后的字符串,配置到你的项目配置文件中,项目启动后,springboot项目会根据你写的解密方法去自行解密,从而链接到你的数据库。

三、相关代码

1、application.yml

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/patient?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: test
    password: oiWRKCcmZH/pQes5KH03kgVSHza7OK/G
  jpa:
    hibernate:
      ddl-auto: update
    show-sql:true

2、密码加密工具类

packagecom.jianqi.HL7Service.config;importorg.jasypt.properties.PropertyValueEncryptionUtils;importorg.jasypt.util.text.BasicTextEncryptor;publicfinalclassJasyptEncryptorUtils{privatestaticfinalString salt ="test666";privatestaticBasicTextEncryptor basicTextEncryptor =newBasicTextEncryptor();static{
        basicTextEncryptor.setPassword(salt);}privateJasyptEncryptorUtils(){}/**
     * 明文加密
     * @param plaintext
     * @return
     */publicstaticStringencode(String plaintext){System.out.println("明文字符串:"+ plaintext);String ciphertext = basicTextEncryptor.encrypt(plaintext);return ciphertext;}/**
     * 解密
     * @param ciphertext
     * @return
     */publicstaticStringdecode(String ciphertext){
        ciphertext ="ENC("+ ciphertext +")";if(PropertyValueEncryptionUtils.isEncryptedValue(ciphertext)){String plaintext =PropertyValueEncryptionUtils.decrypt(ciphertext,basicTextEncryptor);return plaintext;}System.out.println("解密失败");return"";}publicstaticvoidmain(String[] args){// 需要加密的明文String plaintext ="patient113";// 加密明文String encryptedText =JasyptEncryptorUtils.encode(plaintext);System.out.println("加密后字符串:"+ encryptedText);// 解密密文String decryptedText =JasyptEncryptorUtils.decode(encryptedText);System.out.println("解密后的字符串:"+ decryptedText);}}

3、数据库配置类

packagecom.jianqi.HL7Service.config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.jpa.repository.config.EnableJpaRepositories;importorg.springframework.transaction.annotation.EnableTransactionManagement;importorg.springframework.transaction.PlatformTransactionManager;importorg.springframework.orm.jpa.JpaTransactionManager;importorg.springframework.boot.jdbc.DataSourceBuilder;importjavax.sql.DataSource;@Configuration@EnableJpaRepositories(basePackages ="com.jianqi.HL7Service.repository")@EnableTransactionManagementpublicclassDatabaseConfig{@Value("${spring.datasource.url}")privateString dbUrl;@Value("${spring.datasource.username}")privateString dbUsername;@Value("${spring.datasource.password}")privateString dbEncryptedPassword;@BeanpublicDataSourcedataSource(){// 使用 JasyptEncryptorUtils 解密数据库密码String dbPassword =JasyptEncryptorUtils.decode(dbEncryptedPassword);returnDataSourceBuilder.create().url(dbUrl).username(dbUsername).password(dbPassword).build();}@BeanpublicPlatformTransactionManagertransactionManager(){JpaTransactionManager transactionManager =newJpaTransactionManager();
        transactionManager.setDataSource(dataSource());return transactionManager;}}

本文转载自: https://blog.csdn.net/qq_43112019/article/details/141310925
版权归原作者 程序员潘子 所有, 如有侵权,请联系我们删除。

“SpringBoot 项目配置数据库密码加密”的评论:

还没有评论