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)