使用的框架:vue3,javaScript (vue2一样适用)
import { reactive } from "vue";
import { Decrypt, Encrypt, encryptByDES } from '@/utils/crypto'
const state = reactive({
// 模拟的数据
jsonData: {
code: 0,
key: '13246578123456781234567812345678', // 密钥
data: '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',
message: '操作成功'
}, })
const ab = Decrypt(state.jsonData.data, state.jsonData.key)
console.log(JSON.parse(ab)) // 利用JSON.parse解一下
// 创建crypto.js文件
import cryptoJs from "crypto-js"; // npm i crypto-js 插件记得下载
import { Base64 } from "js-base64"; // npm i js-base64 插件记得下载
//AES解密方法
export function Decrypt(word, key, iv) {
// word 是加密的文本
const newKey = cryptoJs.enc.Utf8.parse(key); //秘钥
// const newIv = cryptoJs.enc.Utf8.parse(iv);
var result = cryptoJs.AES.decrypt(word, newKey, {
// iv: newIv, // 有一些没有 可不加
mode: cryptoJs.mode.ECB,
padding: cryptoJs.pad.Pkcs7,
});
var info = cryptoJs.enc.Utf8.stringify(result).toString();
return info;
}
///AES加密方法
export function Encrypt(word, key, iv) {
let srcs = cryptoJs.enc.Utf8.parse(word);
let encrypted = cryptoJs.AES.encrypt(srcs, cryptoJs.enc.Utf8.parse(key), {
iv: cryptoJs.enc.Utf8.parse(iv),
mode: cryptoJs.mode.CBC,
padding: cryptoJs.pad.Pkcs7,
});
// ciphertext:16进制加密,不加此方法就是Base64加密
// return encrypted.ciphertext.toString().toUpperCase();
return encrypted.toString();
}
// 3DES 加密
export const encryptByDES = (dataStr, key, iv) => {
const keyHex = cryptoJs.enc.Utf8.parse(key);
const encrypted = cryptoJs.TripleDES.encrypt(dataStr, keyHex, {
mode: cryptoJs.mode.CBC,
padding: cryptoJs.pad.Pkcs7,
iv: cryptoJs.enc.Utf8.parse(iv),
});
return encrypted.toString();
};
// 3DES 解密
export const decryptByDES = (ciphertext, key, iv) => {
const keyHex = cryptoJs.enc.Utf8.parse(key);
const decrypted = cryptoJs.TripleDES.decrypt({
ciphertext: cryptoJs.enc.Base64.parse(ciphertext),
}, keyHex,{
mode: cryptoJs.mode.CBC,
padding: cryptoJs.pad.Pkcs7,
iv: cryptoJs.enc.Utf8.parse(iv),
}
);
return decrypted.toString(cryptoJs.enc.Utf8);
};