前言
该demo展示ShardingSphere 5.1.2版本加密算法的基本配置(其他配置见专栏其他文章),和4.1.1版本相比,改动较大,资料也很少。这个版本不建议使用,建议使用4.1.1,资料比较多,漏洞也少。在5.1.2版本中,配置逻辑列后,再配置加密列和明文列时,会导致加密失败,不起作用。原因是在查找加密方法时,逻辑列是表的列名,而不是配置的逻辑列名。导致加解密失效:
还有个问题,在配置明文列后,或者在配置中配置了2个不同的配置列名后,Sharing Sphere会在改写时SQL中将多配置的列生成2次,导致报错:
yml加密配置
application-encrypt.yml
spring:
shardingsphere:
rules:
sharding:
tables:
c_user:
actual-data-nodes: ftdb$->{0}.c_user
table-strategy:
standard:
key-generator:
column: id
key-generator-name: MYKEY
encrypt:
tables:
c_user:
columns:
pwd_cipher:
cipher-column: pwd_cipher
encryptor-name: ftaes_encryptor
query-with-cipher-column: true
encryptors:
ftaes_encryptor:
type: MD5
# AES加密配置
# type: AES
# props:
# aes-key-value: 1234
将加密配置引入主application.yml中:
测试结果
可以看到插入成功
查询测试
查询时需要注意,该版本不支持like,BETWEEN…AND.,支持的查询有如下和in,not in:
查询结果示例:
可以看到对查询的参数进行了加密,由于示例中使用的是MD5加密,所以返回的是密文,如果使用AES加密,则返回明文。
这是对ShardingSphere最新版本5.1.2–加密算法的简单demo,关于明文列的配置和逻辑列的配置失效的问题,欢迎大家探讨。