Enum的使用

71 阅读1分钟

1、前言

使用枚举类,可以通过根据枚举值调用相应的方法。

我们经常在数据库中遇到 值 对应映射的情况 1--->可用 2--->终止

直接沾代码

package org.zy.zbp.safety.enums;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.DES;
import cn.hutool.crypto.symmetric.AES;
import org.zy.zbp.common.exception.BizException;
import org.zy.zbp.safety.constant.BizConstant;

/**
 * @author xly
 */

public enum EncryptEnum {

    AES(){

        @Override
        public String decode(String content) {
            String decryptStr="";
            try{
                AES aes = SecureUtil.aes(BizConstant.AES_KEY.getBytes());
                decryptStr=aes.decryptStr(content);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                return decryptStr;
            }
        }

        @Override
        public String encode(String content) {
            AES aes = SecureUtil.aes(BizConstant.AES_KEY.getBytes());
            // 加密为16进制表示
            return aes.encryptHex(content);
        }
    },

    DES(){

        @Override
        public String decode(String content) {
            String decryptStr="";
            try{
                DES des = SecureUtil.des(BizConstant.DES_KEY.getBytes());
                decryptStr=des.decryptStr(content);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                return decryptStr;
            }
        }

        @Override
        public String encode(String content) {
            DES des = SecureUtil.des(BizConstant.DES_KEY.getBytes());
            return des.encryptHex(content);
        }
    },

    ;

    EncryptEnum(){

    }

    public String encode(String content){
        return null;
    }

    public String decode(String content){
        return null;
    }

    /**
     * 加密
     * @author xulongyu
     * @date 2022/12/9 12:18
     * @param  type  解密类型
     * @param  content 内容
     * @return String
     **/
    public static String encode(String type, String content){
        for (EncryptEnum value : values()) {
            if(value.name().equals(type)){
                return value.encode(content);
            }
        }
        throw new BizException("不支持的加密类型: " + type);
    }

    /**
     * 解密
     * @author xulongyu
     * @date 2022/12/9 12:18
     * @param  type 加密类型
     * @param  content 内容
     * @return String
     **/
    public static String decode(String type, String content){
        for (EncryptEnum value : values()) {
            if(value.name().equals(type)){
                return value.decode(content);
            }
        }
        throw new BizException("不支持的解密类型" + type);
    }

}

调用

EncryptEnum.encode("AES", BizConstant.BEFORE_HANDLE_EXAMPLE)