第一步,安装
npm i crypto-js --save-dev
第二步,创建一个DES.js,放到你自己的目录里
import cryptoJs from 'crypto-js';
//随机生成指定数量的16进制key
export const 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;
}
//DES加密
export const encryptDes = (message, key) => {
var keyHex = cryptoJs.enc.Utf8.parse(key)
var option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.ZeroPadding }
var encrypted = cryptoJs.DES.encrypt(message, keyHex, option)
return encrypted.ciphertext.toString()
}
//DES解密
export const decryptDes = (message, key) => {
var keyHex = cryptoJs.enc.Utf8.parse(key)
var decrypted = cryptoJs.DES.decrypt(
{
ciphertext: cryptoJs.enc.Hex.parse(message)
},
keyHex,
{
mode: cryptoJs.mode.ECB,
padding: cryptoJs.pad.ZeroPadding
}
)
return decrypted.toString(cryptoJs.enc.Utf8)
}
//DES3加密
export const encryptByDES = (message, key) => {
const keyHex = cryptoJs.enc.Utf8.parse(key);
const encrypted = cryptoJs.TripleDES.encrypt(message, keyHex, {
mode: cryptoJs.mode.ECB,//ecb模式
padding: cryptoJs.pad.ZeroPadding//ZeroPadding填充方式
});
return encrypted.ciphertext.toString();//返回hex格式
//return encrypted.toString();//返回base64
}
//DES3解密
export const decryptByDES = (ciphertext, key) => {
const keyHex = cryptoJs.enc.Utf8.parse(key);
// direct decrypt ciphertext
const decrypted = cryptoJs.TripleDES.decrypt({
ciphertext: cryptoJs.enc.Hex.parse(ciphertext)
}, keyHex, {
mode: cryptoJs.mode.ECB,
padding: cryptoJs.pad.ZeroPadding
});
return decrypted.toString(cryptoJs.enc.Utf8);
}
其中的
mode: cryptoJs.mode.ECB,//ecb模式
padding: cryptoJs.pad.ZeroPadding//ZeroPadding填充方式
这个模式和方式前后端需要一致才可以解密成功
第三步,使用
import { encryptDes, decryptDes, generatekey,encryptByDES ,decryptByDES} from "@/lib/DES.js";
const encrypts1 = encryptDes(this.ruleForm.password,key);
const encrypts2 = encryptByDES(this.ruleForm.password,key);
console.log("des "+decryptDes(encrypts1,key));
console.log("des3 "+decryptByDES(encrypts2,key));
key可以使用自己定义的字符串,也可以使用generatekey方法自动生成