AESUtil(加密、解密)
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AesUtil {
private static String salt="你的16位salt(自己定义)";
public static String Encrypt(String content) throws Exception {
byte[] raw = salt.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec("1234567890123456".getBytes());
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(content.getBytes());
return new BASE64Encoder().encode(encrypted);
}
public static String Decrypt(String content, String key) throws Exception {
try {
if (key == null) {
System.out.print("Key为空null");
return null;
}
if (key.length() != 16) {
System.out.print("Key长度不是16位");
return null;
}
byte[] raw = key.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec("1234567890123456".getBytes());
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] encrypted1 = new BASE64Decoder().decodeBuffer(content);
try {
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original);
return originalString;
} catch (Exception e) {
System.out.println(e);
return null;
}
} catch (Exception ex) {
System.out.println(ex);
return null;
}
}
}
如何使用:
public User login(User user) {
String userName = user.getUserName();
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.eq("user_name", userName);
User data = getOne(userQueryWrapper);
if (data == null) {
throw new CustomException(ErrCodeEnum.USER_ACCOUNT_ERROR);
}
try {
String userPwd = AesUtil.Decrypt(data.getUserPwd(), data.getUserSalt());
if (!StrUtil.equals(userPwd, user.getUserPwd())) {
throw new CustomException(ErrCodeEnum.USER_PASSWORD_ERROR.getErrDescription());
}
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
public String saveNewUser(User user) {
try {
String pwd=AesUtil.Encrypt(user.getUserPwd());
user.setUserPwd(pwd);
boolean save = save(user);
if (!save) {
throw new CustomException(ErrCodeEnum.USER_SAVE_ERROR);
}
} catch (Exception e) {
e.printStackTrace();
}
return "test";
}