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

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

1、安装jsencryptnpm

npm i jsencrypt
复制代码

2、在main.js 引入 jsencrypt后端

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

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


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~
请求公钥时候的代码:bash

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

调用encruption方法ui

this.encruption(obj,this.pubKey)
复制代码
相关文章
相关标签/搜索