在vue中关于rsa加密踩到的坑

选来选去,最后选中的是jsencrypt

一、安装jsencrypt

npm i jsencrypt
复制代码

二、在main.js 引入 jsencrypt

import JsEncrypt from 'jsencrypt'
Vue.prototype.$jsEncrypt = JsEncrypt
复制代码

三、使用jsencrypt,我这里单独把它写在一个js里面,方便管理一些嘛
  目录结构


import Vue from 'vue'
import JsEncrypt from 'jsencrypt'

  Vue.prototype.encruption = function(obj,pubkey){
	var jse = new JsEncrypt(); // 新建JSEncrypt对象
	jse.setPublicKey(pubkey)   // 设置公钥
	return jse.encrypt(obj); // 对密码进行加密
}

复制代码

在设置公钥的时候,需要后端同学传过来的公钥(pubkey)进行加密,所以我就是在这里踩得坑呀,我把请求公钥的方法写在了上段的js里,导致了在进行加密的时候还没有获取到pubkey,所以每次传的私钥后端同学都解密不出来。
最后debug之后发现了这个问题,所以在页面加载时候把pubkey就先请求出来 然后在需要加密时候把pubkey直接当做参数传过来~然后就完美的解决了这个bug~
请求公钥时候的代码:

//请求公钥
   getPubKey(){
   	apiRsaKey({      //接口
	}).then(res =>{			
    	this.pubKey = res.data	
        })
  },
复制代码

调用encruption方法

this.encruption(obj,this.pubKey)
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值