shardingsphere-jdbc之Mybatis 敏感数据加密

本文介绍了如何使用ShardingSphere-JDBC 5.1.0对敏感数据进行加密,涉及MD5、AES、RC4、SM3和SM4等多种加密算法。详细讲解了项目依赖、配置文件设置、测试用例和完整项目源码分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

基于shardingsphere-jdbc 5.1.0 对敏感数据进行加密

默认加密算法

  • MD5 加密算法
  • AES 加密算法
  • RC4 加密算法
  • SM3 加密算法
  • SM4 加密算法

1. maven项目依赖

<dependencies>
	<dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
            <version>5.1.0</version>
        </dependency>
	<dependency>
           <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
</dependencies>

2.application.yml配置

spring:
  application:
    name: jdbc-myabtis-encrypt
  profiles:
    include: jdbc

mybatis:
  mapper-locations: classpath*:/mappers/*-mapper.xml
  type-aliases-package: com.lance.sharding.encrypt
### 集成ShardingSphereMyBatisPlus #### 项目准备 为了成功集成ShardingSphereMyBatisPlus,在开始之前需确保环境已准备好。创建一个新的Spring Boot项目并引入必要的依赖项,包括`shardingsphere-jdbc-spring-boot-starter`和`mybatis-plus-boot-starter`。 ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-spring-boot-starter</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency> ``` #### 数据源配置 定义多个数据源用于测试读写分离效果。通过application.yml文件中的配置指定主库和从库的信息[^4]: ```yaml spring: shardingsphere: datasource: names: master,slave_0 master: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/master_db?useSSL=false&serverTimezone=UTC username: root password: root slave_0: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3307/slave_db?useSSL=false&serverTimezone=UTC username: root password: root rules: readwrite-splitting: data-sources: default: static-strategy: write-data-source-name: master read-data-source-names: slave_0 ``` #### 实体类映射 利用MyBatisPlus简化实体操作,只需继承自BaseMapper接口即可完成基本CRUD方法的封装[^3]。 ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<User> { } ``` #### 加密字段处理 对于敏感信息存储需求场景下,可以借助ShardingSphere提供的内置加密算法支持来保护特定列的数据安全。注意调整表结构设计时区分物理列名(实际存于DB内的名称)同逻辑列名(应用程序层面所见)[^2]。 ```properties spring.shardingsphere.rules.encrypt.tables.user.columns.password.plain-column=password_plain cipher-column=password_cipher encryptor.name=aes_encryptor ``` 以上设置表明password字段将被AES方式进行加解密转换;plain-column代表未加密前原始值所在位置而cipher-column则是经过编码后的最终形态保存之处。 #### 测试验证 编写单元测试案例检验上述配置是否生效以及业务逻辑能否正常运作。例如查询某个用户的详情记录,并打印其密码部分以确认已被妥善隐藏显示。 ```java @Test void testSelectUser() { List<User> users = userMapper.selectList(null); System.out.println(users.get(0).getPassword()); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值