前端加密:
前端加密使用了CryptoJS,已存至百度网盘,点击此处下载,提取码:xjbl。下载完成后,将文件解压,把整个文件夹放到项目路径下,之后可以使用import引入该js,本人放到了common文件夹下。
import CryptoJS from '@/common/crypto-js-4.2.0/crypto-js'
之后便可以在methods中定义相应的加密方法:
// AES加密函数
encrypt(data) {
//key为加密字符串,16长度
var key = '123456789abcdef'
// 将密钥转换为 WordArray
var keyWords = CryptoJS.enc.Utf8.parse(key);
// 将数据转换为 WordArray
var dataWords = CryptoJS.enc.Utf8.parse(data);
// 配置加密参数
var encrypted = CryptoJS.AES.encrypt(dataWords, keyWords, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
// 输出为 Base64 字符串
return encrypted.toString();
}
后端加密和解密:
package com.example.tool;
import org.apache.commons.lang3.StringUtils;
import sun.misc.BASE64Encoder;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
/**
* @ClassName AesCode
* @Description
* @Author lyw
* @Version 1.0
* @Create 2024-05-08 14:43
*/
public class AesCode {
/**
*功能描述 加密
* @param input
* @param key
*@Return java.lang.String
*@Author lyw
*@Date 2024-05-08 15:08
*/
public static String aesEncrypt(String input, String key) {
try {
// 创建 AES 密钥
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
// 创建并初始化密码器
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
// 加密数据
byte[] encrypted = cipher.doFinal(input.getBytes("UTF-8"));
// 返回 Base64 编码后的加密数据
return Base64.getEncoder().encodeToString(encrypted);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
*功能描述 解密
* @param input
* @param key
*@Return java.lang.String
*@Author lyw
*@Date 2024-05-08 15:32
*/
public static String aesDecrypt(String input, String key) {
try {
// 创建 AES 密钥
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
// 创建并初始化密码器
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
// 解密 Base64 编码后的数据
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(input));
// 返回解密后的字符串
return new String(decrypted, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static String bytesToHex(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (byte b : bytes) {
result.append(String.format("%02X", b));
}
return result.toString();
}
private static byte[] hexStringToByteArray(String hexString) {
int len = hexString.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
+ Character.digit(hexString.charAt(i + 1), 16));
}
return data;
}
}
后端加密、解密的应用:
try {
//保证前后端加密、解密字符串一致
String passWord = AesCode.aesDecrypt(addMaterialUser.getPassWord(),"123456789abcdef");
}
catch (Exception e){
System.out.println(e.getMessage());
return AjaxResult.error();
}
本文转载自: https://blog.csdn.net/qq_43618249/article/details/138600924
版权归原作者 白英' 所有, 如有侵权,请联系我们删除。
版权归原作者 白英' 所有, 如有侵权,请联系我们删除。