vue项目中Des的加密解密

1、安装

npm install crypto-js --save-dev

也可以指定版本

npm install crypto-js@3.3.0 --save-dev

2、写js方法文件des.js
提供两种方式(加密结果有所不同)
方式一:

import cryptoJs from 'crypto-js'

export const encryptDes = (message, key) => {
    let keyHex = cryptoJs.enc.Utf8.parse(key)
    let option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 }
    let encrypted = cryptoJs.DES.encrypt(message, keyHex, option)
    return encrypted.ciphertext.toString()
}

export const decryptDes = (message, key) => {
    let keyHex = cryptoJs.enc.Utf8.parse(key);
    let decrypted = cryptoJs.DES.decrypt(
        {
            ciphertext: cryptoJs.enc.Hex.parse(message)
        },
        keyHex,
        {
            mode: cryptoJs.mode.ECB,
            padding: cryptoJs.pad.Pkcs7
        }
    )
    return decrypted.toString(cryptoJs.enc.Utf8)
}

方式二:

import cryptoJs from 'crypto-js'

export const encryptDes = (message, key) => {
    let keyHex = cryptoJs.enc.Utf8.parse(key);
    let encrypted = cryptoJs.DES.encrypt(message, keyHex, {
        mode: cryptoJs.mode.ECB,
        padding: cryptoJs.pad.Pkcs7,
    });
    return encrypted.toString();
}

export const decryptDes = (message, key) => {
    let keyHex = cryptoJs.enc.Utf8.parse(key);
    let decrypted = cryptoJs.DES.decrypt(
        {
            ciphertext: cryptoJs.enc.Base64.parse(message),
        },
        keyHex,
        {
            mode: cryptoJs.mode.ECB,
            padding: cryptoJs.pad.Pkcs7,
        }
    );
    return decrypted.toString(cryptoJs.enc.Utf8);
}

3、引入。
在main.js中引入

import { encryptDes, decryptDes } from './utils/des'
Vue.prototype.encryptDes = encryptDes;
Vue.prototype.decryptDes = decryptDes;

4、使用
示例:

let obk = {
	ceshi:'ceshi1',
	a:'aa',
	b:'bb'
}
let key = 'ceshiKEY';

方式一使用结果:

//加密
let jiam = this.encryptDes(JSON.stringify(obk),key)
console.log(jiam)    
//结果是:bb8d7d51ab6a47e0bff4a057181fb571472a8621281dd6c19673742c79d4e5a3f0aaabe9f77124e8
//解密
let jmJson= this.decryptDes(jiam,key);
console.log(jmJson)
//结果是(字符串):{"ceshi":"ceshi1","a":"aa","b":"bb"}

方式二结果:

//加密
let jiam = this.encryptDes(JSON.stringify(obk),key)
console.log(jiam)    
//结果是:u419UatqR+C/9KBXGB+1cUcqhiEoHdbBlnN0LHnU5aPwqqvp93Ek6A==
//解密
let jmJson= this.decryptDes(jiam,key);
console.log(jmJson)
//结果是(字符串):{"ceshi":"ceshi1","a":"aa","b":"bb"}

注:

  1. 给对象等加密要先转成字符串;
  2. 方式一和方式二的加解密不能混用;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值