一、前端js方法
说明:当前是在vue项目中使用
新建AES.js 文件
import CryptoJS from 'crypto-js';
export default {
//随机生成指定数量的16进制key
generatekey(num) {
let library = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let key = "";
for (var i = 0; i < num; i++) {
let randomPoz = Math.floor(Math.random() * library.length);
key += library.substring(randomPoz, randomPoz + 1);
}
return key;
},
//加密
encrypt(word, keyStr) {
// 前后端指定同样的秘钥,很重要!!!
keyStr = keyStr ? keyStr : 'abcdsxyzhkj12345'; //判断是否存在ksy,不存在就用定义好的key
var key = CryptoJS.enc.Utf8.parse(keyStr);
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return encrypted.toString();
},
//解密
decrypt(word, keyStr) {
// 前后端指定同样的秘钥,很重要!!!
keyStr = keyStr ? keyStr : 'abcdsxyzhkj12345';
var key = CryptoJS.enc.Utf8.parse(keyStr);
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
}
二、使用
// 指定数据
obj = {
id:47,
name:'张三'
}
console.log("开始加密")
let a = AES.encrypt(JSON.stringify(obj))
console.log(a)
console.log("开始解密")
let b = AES.decrypt(a)
console.log(b)
console.log("结束")
//调用接口直接将加密后的数据传过去
this.$axios.post(this.$api + 'api/device/deleteSameDevice', a).then((res) => {
// console.log(AES.decrypt(obj))
console.log(res, 'wwwwwwwwww')
console.log(res, 'xxxxxxxxxxxxx')
}).catch((error) => {
console.log(error)
})
三、java使用
1.新建aesUtil包存放工具类
2.新建AESUtils.java 类
package com.gh.sd.util.aesUtil;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AESUtils {
// 加解密方式
private static final String AES_ALGORITHM = "AES/ECB/PKCS5Padding"<