vue中请求参数使用加密

本文介绍了在Vue.js应用中如何对POST请求的JSON参数进行加密,通过创建一个专门的JS文件来处理加密逻辑,并在前端页面调用。同时,文章也提及后端如何解密这些加密数据,确保数据传输的安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

post请求后端json字符串加密 创建一个js文件

import CryptoJS from 'crypto-js/crypto-js'

// 默认的 KEY 与 iv 如果没有给
const KEY = CryptoJS.enc.Utf8.parse("1234567890123456");
const IV = CryptoJS.enc.Utf8.parse('1234567890123456');
/**
 * AES加密 :字符串 key iv  返回base64
 */
export function Encrypt(word, keyStr, ivStr) {
  let key = KEY;
  let iv = IV;
  if (keyStr) {
    key = CryptoJS.enc.Utf8.parse(keyStr);
    iv = CryptoJS.enc.Utf8.parse(ivStr);
  }
  let srcs = CryptoJS.enc.Utf8.parse(word);
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });
  return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);

}
/**
 * AES 解密 :字符串 key iv  返回base64
 *
 * @return {string}
 */
export function Decrypt(word, keyStr, ivStr) {
  let key  = KEY;
  let iv = IV;

  if (keyStr) {
    key = CryptoJS.enc.Utf8.parse(keyStr);
    iv = CryptoJS.enc.Utf8.parse(ivStr);
  }

  let base64 = CryptoJS.enc.Base64.parse(word);
  let src = CryptoJS.enc.Base64.stringify(base64);

  let decrypt = CryptoJS.AES.decrypt(src, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });

  let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  return decryptedStr.toString();
}

页面中调用

import {Encrypt,Decrypt} from '../../assets/js/secret'
var obj = new Object();
            obj.token = userinfo.token;
            obj.pagenum = this.currentPage;
            obj.pagerow = this.pageSize;
            obj.nodedata = this.nodedata;
            // obj.hidden_status = 3;
            var jsonobj = JSON.stringify(obj);
            var jms = Encrypt(jsonobj);
            console.log(jms)
            //发送post请求
            axios.post(this.$store.state.WHPATH+'/XXX/XXX', 
            {
                xxx: jms   //后端直接获取map中的xxx进行解密
            },{
                // 单独配置
                withCredentials: true
            }).then((res)=>{
                console.log(res.data);
                if(res.data.code == 2001){
                    this.$nextTick(() => {
                        this.$router.replace('/login');
                    });
                }else if(res.data.code == 506){
                    this.$message({
                        message: res.data.msg,
                        type: 'warning' 
                    });
                }else{
                    console.log(res.data)
                }
            }).catch(function (response) {
                 console.log(response);
            }); 
        },

后端处理 ESN类也有

public static Map<String, Object> newMap(Map<String, Object> map) throws Exception {
        String str = (String) map.get("xxx");
        String EJM = ESN.desEncryptX(str);
        Map<String,Object> mmp = JSONObject.parseObject(EJM);
        return mmp;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值