package com.ruoyi.security.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 加密字段注解
 * 用于标记需要进行字段级加密的属性
 * 
 * @author ruoyi
 * @date 2025-01-20
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface EncryptedField {
    
    /**
     * 加密算法
     * 默认使用AES-256-GCM
     */
    String algorithm() default "AES-256-GCM";
    
    /**
     * 密钥ID
     * 如果不指定，使用默认密钥
     */
    String keyId() default "";
    
    /**
     * 是否启用加密
     * 可用于动态控制加密开关
     */
    boolean enabled() default true;
    
    /**
     * 加密字段描述
     */
    String description() default "";
}