vue操作DES和3DES加密

2 篇文章 0 订阅

第一步,安装

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方法自动生成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值