前端sm2国密算法

npm i sm-crypto   首先下载依赖

新建一个index.js文件

const sm2 = require("sm-crypto").sm2;

/**
 * sm2加密
 * @param {*} value 要加密的value
 * @return 加密后的密文
 */
export function sm2Encryption(value) {
  // 公钥
  const publicKey =
    "你的公钥";
  let encryptData = value && sm2.doEncrypt(value, publicKey, 1);
  // 加密的数据前面要拼接04
  return encryptData ? "04" + encryptData : null;
}

然后在main.js全局挂载

然后在 request.js请求里面写如下代码 注意:(请求拦截器前写)

let configData = JSON.parse(JSON.stringify(config));
    const { params, data } = configData;
    //要加密的参数池
    const filterKeys = [
      "password",//密码
    ];
    //是否脱敏
    let isSm2 = false;
    filterKeys.forEach((item) => {
      if (data && Object.prototype.hasOwnProperty.call(data, item)) {
        data[item] = sm2Encryption(data[item]);
        isSm2 = true;

      }
      if (params && Object.prototype.hasOwnProperty.call(params, item)) {
        params[item] = sm2Encryption(params[item]);
        isSm2 = true;
      }
    });
    if (isSm2) {
      config.data = configData.data;
      config.params = configData.params;
    }

这样就可以使用啦~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值