ASE加密解密算法工具类
程序员文章站
2024-03-20 10:20:28
...
直接上工具类代码,不需要引入额外的包,MD5只是测试使用
import org.codelogger.utils.MD5Utils;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
* @describe:ASE加密解密算法工具类,暂时只用了微信解密
* @author: jiahong.xing/
* @version: v1.0
* @date 2018/12/1112:43
*/
public class AESUtil {
/**
* **算法
*/
private static final String ALGORITHM = "AES";
/**
* 加解密算法/工作模式/填充方式
*/
private static final String ALGORITHM_MODE_PADDING = "AES/ECB/PKCS5Padding";
//得到key
private static SecretKeySpec getKey(String key) {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
return secretKeySpec;
}
/**
* AES加密
*
* @param data 加密前数据
* @param key 解密的key,如果是微信支付,需要md5后转小写传过来
* @return
* @throws Exception
*/
public static String encryptData(String data, String key) throws Exception {
// 创建密码器
Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING);
// 初始化
cipher.init(Cipher.ENCRYPT_MODE, getKey(key));
return Base64Util.encode(cipher.doFinal(data.getBytes()));
}
/**
* AES解密
*
* @param base64Data 解密前数据
* @param key 解密的key,如果是微信支付,需要md5后转小写传过来
* @return
* @throws Exception
*/
public static String decryptData(String base64Data, String key) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING);
cipher.init(Cipher.DECRYPT_MODE, getKey(key));
return new String(cipher.doFinal(Base64Util.decodeBite(base64Data)));
}
public static void main(String[] args) {
try {
String str1 = "";
System.out.println(decryptData(str1, MD5Utils.getMD5("d21cc5a7de4c43b609cdf35bc360c980").toLowerCase()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
上一篇: 部分代码2