如何实现自定义数据库账号密码加解密

编程入门 行业动态 更新时间:2024-10-21 03:12:15

如何实现<a href=https://www.elefans.com/category/jswz/34/1771438.html style=自定义数据库账号密码加解密"/>

如何实现自定义数据库账号密码加解密

背景

在实际的项目开发中我们有时候基于安全考虑需要在项目配置文件中对数据库账号密码做加密处理,这个时候我们就可以使用jasypt这个组件来实现。如果有些项目安全等级要求比较高,可能加密的算法需要自定义或者使用SM4国密算法来实现加解密,那么这个时候我们该如何使用jasypt这个组件来实现自定义算法加解密?

准备工作

首先我们需要引入jasypt组件,在pom文件中添加相关依赖

<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>1.14</version>
</dependency>
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot</artifactId><version>1.14</version>
</dependency>

写好加解密算法,这个我们就以常用的SM4国密算法为例(为了方便直接将整个hutool引入,实际项目中可以按模块引入相关依赖)

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.8</version>
</dependency>

代码编写

SM4工具类代码

package com.example.springdemo.databaseEncryptor;import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.SM4;
import cn.hutool.crypto.symmetric.SymmetricCrypto;/*** Created with IntelliJ IDEA** @author kingMouse* @date 2023/8/31 09:39* Description: SM4工具类*/public class SM4Util {private static final SymmetricCrypto SM4_CONTEXT = new SM4(Mode.CBC, Padding.PKCS5Padding, "GJeeXX_B4dr7JWJW".getBytes(CharsetUtil.CHARSET_UTF_8), "Zkw_SdNoSsFT=568".getBytes(CharsetUtil.CHARSET_UTF_8));/*** 加密* @param plainTxt* @return*/public static String encrypt(String plainTxt){byte[] encrypHex = SM4_CONTEXT.encrypt(plainTxt);return Base64.encode(encrypHex);}/*** 解密* @param cipherTxt* @return*/public static String decrypt(String cipherTxt){byte[] cipherHex = Base64.decode(cipherTxt);return SM4_CONTEXT.decryptStr(cipherHex, CharsetUtil.CHARSET_UTF_8);}
}

提供一个名为jasyptStringEncryptor名称的Bean来替换jasypt默认的加解密算法

package com.example.springdemo.databaseEncryptor;import com.ulisesbocchio.jasyptspringboot.properties.JasyptEncryptorConfigurationProperties;
import org.jasypt.encryption.StringEncryptor;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** Created with IntelliJ IDEA** @author kingMouse* @date 2023/8/31 09:40* Description: 自定义数据库sm4加密器*/
@Configuration
@EnableConfigurationProperties(JasyptEncryptorConfigurationProperties.class)
public class SM4EncryptorConfig {@BeanStringEncryptor jasyptStringEncryptor(JasyptEncryptorConfigurationProperties properties){return new StringEncryptor() {// 加密@Overridepublic String encrypt(String message) {return SM4Util.encrypt(message);}// 解密@Overridepublic String decrypt(String message) {return SM4Util.decrypt(message);}};}
}

配置文件修改

将数据库账号密码使用我们代码中的SM4工具类进行加密,然后将加密后的字符串配置我们的配置文件中

注意要使用ENC()包裹起来,如果不使用ENC()包裹起来则不走加解密规则

spring.datasource.username=ENC(kLUMJ9z/cLqON680m4zalA==)
spring.datasource.password=ENC(n5zn71QTbr2WGC6puEJi8g==)

测试

启动项目访问接口进行数据库数据查询,验证能否正常将数据库中数据查询出来

更多推荐

如何实现自定义数据库账号密码加解密

本文发布于:2024-02-26 19:08:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1703560.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   如何实现   账号   密码   数据库

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!