com.ideaaedi.mybatis.data.security.support.EncryptExecutor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mybatis-data-security Show documentation
Show all versions of mybatis-data-security Show documentation
Automatically encrypt and decrypt database data through mybatis-interceptor.
package com.ideaaedi.mybatis.data.security.support;
import com.ideaaedi.mybatis.data.security.annotation.Encrypt;
import org.springframework.lang.NonNull;
/**
* 加解密执行器
*
* 说明:
*
* - 1. @Encrypt注解可运用于ElementType.FIELD和ElementType.PARAMETER, 所以这里加解密又分为两种情况
* - 2. @Encrypt运用于ElementType.PARAMETER时,只涉及加密,不涉及解密
* - 3. @Encrypt只能作用于String类型的变量或字段上,所以加解密都是针对字符串的
*
*
*
* @author JustryDeng
* @since 2021/2/10 22:42:22
*/
public interface EncryptExecutor {
/**
* 加密
*
* @param paramName
* 参数前@Param指定的名称(,一定不为null)
* @param paramValue
* 待加密的字段值(,一定不为null)
* @param annotation
* 加密注解信息(,一定不为null)
* @return 加密后的数据
*/
String encryptParameter(@NonNull String paramName, @NonNull String paramValue, @NonNull Encrypt annotation);
/**
* 加密
*
* @param fieldName
* 待加密的字段的字段名(,一定不为null)
* @param fieldValue
* 待加密的字段的字段值(,一定不为null)
* @param annotation
* 加密注解信息(,一定不为null)
* @param pojo
* 字段所在的当前对象(,一定不为null)
* @return 加密后的数据
*/
String encryptField(@NonNull String fieldName, @NonNull String fieldValue, Encrypt annotation, @NonNull Object pojo);
/**
* 解密
*
* @param fieldName
* 待解密字段的字段名称(,一定不为null)
* @param fieldValue
* 待解密字段的值(,一定不为null)
* @param annotation
* 解密注解信息(,一定不为null)
* @param pojo
* fieldValue对应所处的对象(,一定不为null)
* @return 解密后的数据
*/
String decryptField(@NonNull String fieldName, @NonNull String fieldValue, @NonNull Encrypt annotation, @NonNull Object pojo);
}