场景:
注册登录SHA加密,不可逆加密
依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
加密文件:
@Slf4j
public class CipherUtils {
public static final String SHA256 = "SHA-256";
public static String encryptSHA256(String var) throws SystemException {
try {
MessageDigest instance = MessageDigest.getInstance(SHA256);
instance.update(var.getBytes(StandardCharsets.UTF_8));
return bytes2Hex(instance.digest());
} catch (NoSuchAlgorithmException e) {
log.error("加密失败:",e);
throw new SystemException(ExcetionEnum.ENCRYPT.getCode(),ExcetionEnum.ENCRYPT.getMsg());
}
}
public static String encryptPassword(String var,String salt) throws SystemException {
return encryptSHA256(encryptSHA256(var+salt)+salt);
}
public static String bytes2Hex(byte[] bts) {
char[] encode = Hex.encode(bts);
return String.valueOf(encode);
}
}
自定义系统异常:
@Getter
public class SystemException extends Exception{
private String exceptionCode;
public SystemException(String exceptionCode,String message) {
super(message);
this.exceptionCode = exceptionCode;
}
}
异常枚举:
@Getter
public enum ExcetionEnum {
ENCRYPT("10001","加密异常");
private String code;
private String msg;
ExcetionEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getMsgByCode(String code) {
String msg = null;
for (ExcetionEnum value : ExcetionEnum.values()) {
if(value.getCode().equals(code)){
msg = value.getMsg();
}
}
return msg;
}
}