Vue前端密钥AES加密Java后台AES解密
目录
Vue前端密钥AES加密+Java后台AES解密
Vue前端密钥AES加密+Java后台AES解密
Vue前端密钥AES加密
1.前端引入依赖
npm install crypto-js
2.前端加密代码
在公共方法中或者自己建一个新的js都可以
密钥是我随机生成的16位密钥:生成随机密钥的网站
import CryptoJS from 'crypto-js'
const key = CryptoJS.enc.Utf8.parse('IOT80YCbsM8ijmBV') // 十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse('WKcJeGjIKGTy3VNW') //十六位十六进制数作为密钥偏移量
export function aesDecrypt(word) {
const decrypt = CryptoJS.AES.decrypt(word, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return decrypt.toString(CryptoJS.enc.Utf8)
}
export function aesEncrypt(word) {
let encrypted = CryptoJS.AES.encrypt(word, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return encrypted.toString()
}
Java后台AES解密
密钥与前端保持一致
//key为16位
private static String KEY = "IOT80YCbsM8ijmBV";
private static String IV = "WKcJeGjIKGTy3VNW";
/**
* 解密方法
*
* @param content 要解密的数据
* @return 解密的结果
* @throws Exception
*/
public static String webDecrypt(String content) {
try {
SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("ASCII"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(IV.getBytes());
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] encrypted1 = Base64.decodeBase64(content);//先用bAES64解密
return new String(cipher.doFinal(encrypted1));
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
参考: