如何通过一个注解实现MyBatis字段加解密

网友投稿 364 2022-10-31

如何通过一个注解实现MyBatis字段加解密

目录简介模块使用方法配置项说明开源链接总结

简介

mybatis-crypto 是一个基于 mybatis 插件机制实现的字段加解密组件,通过一个注解即可对敏感数据进行加解密处理。 支持自定义 Encryptor、特殊字段单独指定 Encryptor 和 key ,满足大部分使用场景。

模块

mybatis-crypto 包括三个模块:

mybatis-crypto-core 插件的核心功能模块mybatis-crypto-spring-boot-starter 提供了 Spring boot 快速整合功能mybatis-crypto-encryptors 提供了一些 IEncryptor 实现

使用方法

引入依赖

io.github.whitedg

mybatis-crypto-spring-boot-starter

${latest.version}

实现 IEncryptor

import io.github.whitedg.mybatis.crypto.IEncryptor;

public class MyEncryptor implements IEncryptor {

@Override

public String encrypt(Object val2bEncrypted, String key) throws Exception {

// 实现这个方法返回加密后的数据

return "encrypted string";

}

@Override

public String decrypt(Object val2bDecrypted, String key) throws Exception {

// 实现这个方法返回解密后的数据

return "decrypted string";

}

}

或者引入 mybatis-crypto-encryptors

mybatis-crypto-encryptors

${latest.version}

使用其提供的 Encryptor:

io.github.whiteklSJuCdg.mybatis.crypto.Base64Encryptorio.github.whitedg.mybatis.crypto.BasicTextEncryptorio.github.whitedg.mybatis.crypto.AES256Encryptorio.github.whitedg.mybatis.crypto.StrongTextEncryptor

添加配置

mybatis-crypto:

# 是否启用插件,默认 true

enabled: true

# 快速失败,默认 true

fail-fast: false

# 全局默认 Encryptor

default-encryptor: io.github.whitedg.mybatis.crypto.BasicTextEncryptor

# Encryptor 默认密钥

default-key: global-key

# mybatis @Param 注解下需要加解密的参数 key 前缀

mapped-key-prefixes: et,encrypted

指定加密字段

在需要加解密的字段上添加注解 @EncryptedField

public class User {

@EncryptedField

private String encryptedStr;

@EncryptedField(encryptor = YourEncryptor.class, key = "Your Key")

private String customizedStr;

}

使用配置的 @Param 参数 key 前缀

import org.apache.ibatis.annotations.Param;

interface YourEntityMapper {

int insert(@Param("et") YourEntity entity);

// 支持数组

int batchInsert(@Param("encryptklSJuCed-entities") List entity);

// 返回值也支持单个对象或数组

YourEntity selectOne();

List selectList();

}

Demo

配置项说明

配置项说明默认值mybatis-crypto.enabled是否启用 mybatis-cryptotruemybatis-crypto.fail-fast快速失败,加解密过程中发生异常是否中断。true:抛出异常,false:使用原始值,打印 warn 级别日志truemybatiklSJuCs-crypto.mapped-key-prefixes@Param 参数名的前缀,前缀匹配则会进行加密处理空mybatis-crypto.default-encryptor全局默认 Encryptor空mybatis-crypto.default-key全局默认 Encryptor 的密钥空

开源链接

github.com/WhiteDG/myb…

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据分析思维分析方法和业务知识——国内电商行业
下一篇:数据分析思维分析方法和业务知识——用数据分析解决问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~