前端使用DES加密和解密

在实际开发中,会用到前端请求后台接口时对请求参数进行加密处理。

以下是两种方式

方式一:

import CryptoJS from "crypto-js";

// DES加密
export const encryptDes = (message, key) => {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var option = { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 };
    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.Pkcs7
        })
    return decrypted.toString(cryptoJs.enc.Utf8)
}

方式二:

import CryptoJS from 'crypto-js';

// DES加密
export const encryptByDES = (message, key) => {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
}

// DES解密
export const decryptByDES = (ciphertext, key) => {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    // direct decrypt ciphertext
    var decrypted = CryptoJS.DES.decrypt({
        ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
    }, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
}

使用方法:

import { encryptByDES, decryptByDES } from "@lib/des"

const { user, pas } = userInfo
const userName = encryptByDES(user, '*abc123');
const passWord = encryptByDES(pas, '*abc123');


posted @ 2020-12-23 14:46  春燕啄春泥  阅读(1254)  评论(0)    收藏  举报