WhiteDG / mybatis-crypto

🔐 A mybatis-based crypto plugin
Apache License 2.0
72 stars 20 forks source link

能支持参数查询吗? #1

Closed coffeebeanyy closed 1 year ago

coffeebeanyy commented 2 years ago

demo里面的User根据name查询, 参数是明文, 查询的时候应该是加密之后的字符串进行查询

@GetMapping("/name/{name}") public ResponseEntity getByName(@PathVariable("name") String name) { User user = userMapper.selectByName(name); return Optional.ofNullable(user) .map(u -> ResponseEntity.status(HttpStatus.OK).body(u)) .orElse(ResponseEntity.status(HttpStatus.NOT_FOUND).build()); }

WhiteDG commented 2 years ago

发布了一个快照版本 1.2.0-SNAPSHOT 支持了查询加密字段,你可以先拉 feature/V1.2.0 这个分支体验一下,demo 已更新。但是有以下限制:

  1. Mapper 接口中查询方法的参数必须是实体,因为需要 @EncryptedField 指定加密字段、算法、密钥等
  2. 被查询的字段使用的加密算法必须是“相同的明文加密后生成的是相同密文”的,例如 demo 中的 name 和 email 字段。(password 和 idCardNo 这两个字段使用的加密算法相同的明文加密后会生成不同的密文) ps: 查询加密字段的需求可能不是大多数情况下需要的,所以增加了一个配置项 mybatis-crypto.encrypted-query用于控制是否打开此功能