des vue 加密解密_关于 vue中使用crypto-js,进行DES 的加密解密

在 util.js引入 import CryptoJS from 'crypto-js'

message: 需要加解密的文本

key: 加解密的秘钥

iv: 偏移量,最短8位数,ecb模式不需要此参数

CBC加密 Pkcs7填充方式

const encryptByDES = function (message, key, iv) {

const keyHex = CryptoJS.enc.Utf8.parse(key) // 秘钥

const iv = CryptoJS.enc.Utf8.parse(iv) // 偏移量

const encrypted = CryptoJS.DES.encrypt(message, keyHex, {

iv: iv,

mode: CryptoJS.mode.CBC, // 加密模式

padding: CryptoJS.pad.Pkcs7

})

return encrypted.ciphertext.toString() // 加密出来为 hex格式密文

}

解密环节

// DES解密

const decryptByDES = function (ciphertext, key, iv) {

const keyHex = CryptoJS.enc.Utf8.parse(key)

const iv = CryptoJS.enc.Utf8.parse(iv)

const decrypted = CryptoJS.DES.decrypt({

ciphertext: CryptoJS.enc.Hex.parse(ciphertext)

}, keyHex, {

iv: iv,

mode: CryptoJS.mode.CBC,

padding: CryptoJS.pad.Pkcs7

})

return decrypted.toString(CryptoJS.enc.Utf8)

}

┈━═┈━═┈━═┈━═┈━═☆ 分 ┈━═┈━═┈━═┈━═┈━═☆ 割 ┈━═┈━═┈━═┈━═┈━═☆ 线

今天碰到一个坑,关于支付密码,需要返回base64格式的密文 在博客园看到一个样例,成功填坑!

3DES加密,加密格式 ECB,返回base64格式

function pswdEncryptByDES(string, key) {

const KeyHex = CryptoJS.enc.Utf8.parse(key);

const encrypted = CryptoJS.TripleDES.encrypt(string,

KeyHex, {

mode: CryptoJS.mode.ECB, // ecb模式不需要偏移量

padding: CryptoJS.pad.Pkcs7

});

let hexstr = encrypted.toString(); // 此方式返回base64格式

// encrypted.ciphertext.toString() 如果是这么写 那就返回hex格式的密文了

return hexstr;

}

解密环节

function Decrypt3Des(base64str, aStrKey, ivstr) {

const KeyHex = CryptoJS.enc.Utf8.parse(aStrKey); // 将key转换成 wordArray

// 因为是base64的密文,所以不用转16进制hex

const decrypted = CryptoJS.TripleDES.decrypt(base64str, KeyHex, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7,

iv: CryptoJS.enc.Utf8.parse(ivstr)

});

return decrypted.toString(CryptoJS.enc.Utf8);

}

┈━═┈━═┈━═┈━═┈━═☆ 分 ┈━═┈━═┈━═┈━═┈━═☆ 割 ┈━═┈━═┈━═┈━═┈━═☆ 线

3DES加密,加密格式 ECB,返回HEX格式

function pswdEncryptByDES(string, key) {

const KeyHex = CryptoJS.enc.Utf8.parse(key);

const encrypted = CryptoJS.TripleDES.encrypt(string,

KeyHex, {

mode: CryptoJS.mode.ECB, // ecb模式不需要偏移量

padding: CryptoJS.pad.Pkcs7

});

// let hexstr = encrypted.toString(); // 此方式返回base64

encrypted.ciphertext.toString() // 返回hex格式的密文

return hexstr;

}

解密环节

function Decrypt3Des(hexStr, aStrKey, ivstr) {

const KeyHex = CryptoJS.enc.Utf8.parse(aStrKey);

//第一步把16进制字符串转为WordArray格式

const WordArray = CryptoJS.enc.Hex.parse(hexStr);

//第二步把WordArray再转为base64的字符串

const base64str = CryptoJS.enc.Base64.stringify(WordArray);

//第三步再进行解密

const decrypted = CryptoJS.TripleDES.decrypt(base64str, KeyHex, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7,

iv: CryptoJS.enc.Utf8.parse(ivstr)

});

return decrypted.toString(CryptoJS.enc.Utf8);

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值