package com.nq.utils;
|
|
import cn.hutool.crypto.Mode;
|
import cn.hutool.crypto.Padding;
|
import cn.hutool.crypto.symmetric.AES;
|
|
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.SecretKeySpec;
|
import java.nio.charset.StandardCharsets;
|
|
/**
|
* @ClassName : SymmetricCryptoUtil //类名
|
* @Description : //描述
|
* @Author : tf //作者
|
* @Date: 2022/10/23 23:31
|
*/
|
|
public class SymmetricCryptoUtil {
|
/**
|
* 16字节
|
*/
|
private static final String ENCODE_KEY = PropertiesUtil.getProperty("user.password");
|
private static final String IV_KEY = "0000000000000000";
|
|
public static void main(String[] args) {
|
// String s = encryptPassword("123123");
|
// System.out.println(s);
|
|
String s = decryptPassword("8OTlTNZ9EwQ29Pf0R8a37Q==");
|
System.out.println(s);
|
|
// String encryptData = encryptFromString("zdm321123.", Mode.CBC, Padding.ZeroPadding);
|
// System.out.println("加密:" + encryptData);
|
// String decryptData = decryptFromString(encryptData, Mode.CBC, Padding.ZeroPadding);
|
// System.out.println("解密:" + decryptData);
|
}
|
|
public static String encryptFromString(String data, Mode mode, Padding padding) {
|
AES aes;
|
if (Mode.CBC == mode) {
|
aes = new AES(mode, padding,
|
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"),
|
new IvParameterSpec(IV_KEY.getBytes()));
|
} else {
|
aes = new AES(mode, padding,
|
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"));
|
}
|
return aes.encryptBase64(data, StandardCharsets.UTF_8);
|
}
|
|
public static String decryptFromString(String data, Mode mode, Padding padding) {
|
AES aes;
|
if (Mode.CBC == mode) {
|
aes = new AES(mode, padding,
|
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"),
|
new IvParameterSpec(IV_KEY.getBytes()));
|
} else {
|
aes = new AES(mode, padding,
|
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"));
|
}
|
byte[] decryptDataBase64 = aes.decrypt(data);
|
return new String(decryptDataBase64, StandardCharsets.UTF_8);
|
}
|
/**
|
* @Description: 加密密码
|
* @Param: password
|
* @return: encryptFromString
|
* @Author: tf
|
* @Date: 2022/10/23
|
*/
|
public static String encryptPassword(String password){
|
return encryptFromString(password, Mode.CBC, Padding.ZeroPadding);
|
}
|
|
/**
|
* @Description: 解密密码
|
* @Param: password
|
* @return: decryptFromString
|
* @Author: tf
|
* @Date: 2022/10/23
|
*/
|
public static String decryptPassword(String password){
|
return decryptFromString(password, Mode.CBC, Padding.ZeroPadding);
|
}
|
|
}
|