创建表、创建实体类、创建repository、创建配置信息、创建测试类

1、添加User表

  1. CREATE TABLE `c_user` (
  2. `Id` bigint(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(256) DEFAULT NULL,
  4. `pwd_plain` varchar(256) DEFAULT NULL,
  5. `pwd_cipher` varchar(256) DEFAULT NULL,
  6. PRIMARY KEY (`Id`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2、 创建实体类

默认是逻辑名

image.png

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配置文件,并指向之
image.png

b、给配置文件添加配置信息

在配置文件里面添加配置信息(因为主要测试脱敏,所以对一个库操作即可)
明文列是可以不显示的、密文列是必须要有的
image.png
完整配置如下:

######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是不可以)
image.png