创建表、创建实体类、创建repository、创建配置信息、创建测试类
1、添加User表
CREATE TABLE `c_user` (
`Id` bigint(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) DEFAULT NULL,
`pwd_plain` varchar(256) DEFAULT NULL,
`pwd_cipher` varchar(256) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2、 创建实体类
package com.slin.entity;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "c_user")
public class CUser implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "name")
private String name;
@Column(name = "pwd")
private String pwd;
// get、set方法
}
3、创建repository
package com.slin.repository;
import com.slin.entity.CUser;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CUserRepository extends JpaRepository<CUser,Long> {
}
4、创建并添加配置信息
a、创建数据脱敏的配置文件
在resource下创建application-encryptor.properties配置文件,并指向之
b、给配置文件添加配置信息
在配置文件里面添加配置信息(因为主要测试脱敏,所以对一个库操作即可)
明文列是可以不显示的、密文列是必须要有的
完整配置如下:
######datasource(数据源,有两个库)#######
spring.shardingsphere.datasource.names=ds0
######配置第一个库#######
#使用连接池
spring.shardingsphere.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
#使用驱动
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
#数据库连接(如果是服务器的就只需要把localhost改为服务器的ip即可)
spring.shardingsphere.datasource.ds0.jdbc-url=jdbc:mysql://localhost:3306/lagou1
#数据库用户和密码
spring.shardingsphere.datasource.ds0.username=root
spring.shardingsphere.datasource.ds0.password=root
########encrypt数据脱敏的配置#############
#对c_user的pwd(逻辑字段)进行脱敏=====plain-column是明文,cipher-column是密文
spring.shardingsphere.encrypt.tables.c_user.columns.pwd.plain-column=pwd_plain
spring.shardingsphere.encrypt.tables.c_user.columns.pwd.cipher-column=pwd_cipher
####设置进行数据脱敏时候的规则算法(用aes的算法、秘钥是1234)
spring.shardingsphere.encrypt.encryptors.lagou_pwd.type=aes
spring.shardingsphere.encrypt.encryptors.lagou_pwd.props.aes.key.value=1234
######将lagou_pwd这个脱敏规则应用到pwd这个逻辑字段上
spring.shardingsphere.encrypt.tables.c_user.columns.pwd.encryptor=lagou_pwd
##也可以用它来表示明文还是密文,true就是明文
#spring.shardingsphere.props.query.with.cipher.column=false
#配置c_user的id主键,采用雪花片算法
spring.shardingsphere.sharding.tables.c_user.key-generator.column=id
spring.shardingsphere.sharding.tables.c_user.key-generator.type=SNOWFLAKE
5、添加测试类
package com.slin.test;
import com.slin.RunBoot;
import com.slin.entity.CUser;
import com.slin.repository.CUserRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
//通过它来启动
@RunWith(SpringRunner.class)
//通过RunBoot来创建boot容器
@SpringBootTest(classes = RunBoot.class)
public class EncryptTest {
@Resource
private CUserRepository cUserRepository;
@Test
public void test1(){
CUser cUser = new CUser();
cUser.setName("tom");
cUser.setPwd("123");
cUserRepository.save(cUser);
}
}
6、结果展示
成功的加密(aes的加密是可以反向的,md5是不可以)