回复
聊聊 Sharding-JDBC 数据脱敏(二)
love374
发布于 2022-7-8 17:27
浏览
0收藏
3. 加密器声明
需要用到什么加密器需要事先在配置文件中声明,这样才能在字段中去引用,配置如下:
spring:
encrypt:
encryptors:
# md5加密算法-sharding-jdbc内置的算法,这里名称任意
encryptor_md5:
# 别名,这里一定要是MD5
type: MD5
# aes加密算法-sharding-jdbc内置的算法,这里名称任意
encryptor_aes:
# 别名,这里一定要是aes
type: aes
props:
# 设置秘钥
aes.key.value: myjszl
上述总计配置了两种Sharding-JDBC内置的加密器,如下:
- encryptor_md5:MD5Encryptor加密器,这里的名称可以任意,但是type这个属性一定要是MD5
- encryptor_aes:AESEncryptor加密器,对称加密算法,因此需要指定加密的秘钥:aes.key.value
Sharding-JDBC指定规则如下:
#加解密器类型,可自定义或选择内置类型:MD5/AES
spring.shardingsphere.encrypt.encryptors.<encryptor-name>.type=
#属性配置, 注意:使用AES加密器,需要配置AES加密器的KEY属性:aes.key.value
spring.shardingsphere.encrypt.encryptors.<encryptor-name>.props.<property-name>=
“关于如何自定义加密器将在下文介绍。”
4. 对数据脱敏配置
下面针对三个字段进行脱敏,如下:
- cipher_pwd:密码使用不可逆的加密器MD5Encryptor
- id_card:身份证使用可逆的加密器AESEncryptor
- mobile:手机号使用可逆的加密器AESEncryptor
详细的配置如下:
spring:
# Sharding-JDBC的配置
shardingsphere:
encrypt:
tables:
t_user:
columns:
# 逻辑列,sharding-jdbc中写SQL需要用到的列
password:
# 存储明文的字段
#plainColumn: password
# 存储密文的字段
cipherColumn: cipher_pwd
# 指定加密器
encryptor: encryptor_md5
# 身份证号的逻辑列,使用aes这种可逆的加密算法
id_card:
cipherColumn: id_card
encryptor: encryptor_aes
# 手机号的逻辑列,使用aes这种可逆的加密算法
mobile:
cipherColumn: mobile
encryptor: encryptor_aes
Sharding-JDBC 指定的规则如下:
spring.shardingsphere.encrypt.tables.<table-name>.columns.<logic-column-name>.encryptor= #加密器名字
spring.shardingsphere.encrypt.tables.<table-name>.columns.<logic-column-name>.plainColumn= #存储明文的字段
spring.shardingsphere.encrypt.tables.<table-name>.columns.<logic-column-name>.cipherColumn= #存储密文的字段
注意:上述配置中的密码这个字段,数据库表中的真实字段是cipher_pwd,但是这里笔者指定的逻辑列是password,因此在写SQL的时候,一定要写password这个逻辑列,比如查询的SQL,如下:
SELECT
password AS cipherPwd,
fullname,
user_type,
id_card AS id_card
FROM
t_user where user_id=?
现在向其中插入几条数据看看效果,单元测试如下:
@Test
public void testInsertUser() {
for (int i = 0; i < 10; i++) {
User user = new User();
user.setFullName("不才陈某");
user.setCipherPwd("abc123");
user.setIdCard("320829198708012232");
user.setUserId((long)i);
user.setMobile("13852331509");
userMapper.insertUser(user);
}
}
文章转自公众号:码猿技术专栏
标签
已于2022-7-8 17:27:38修改
赞
收藏
回复
相关推荐