在Vue项目中使用jsencrypt.js对数据进行加密传输

写在最前边,千万要注意,用此插件加密时,只能是字符串类型,如果是number,加密出来是空!!!血的教训,这个bug我找了大半天才发现

安装jsencrypt

npm install jsencrypt --dep

第一种方法
在 axios封装js里 设置
api => index.js

import { JSEncrypt } from 'jsencrypt'

const Encrypt = new JSEncrypt ();
//加密
//加密一个参数
const doEncrypt = (key) =>{//请求公钥接口获取公钥
	return $http.get('/getPublickey').then(res=>{
			let publicKey = res.data.publicKey
			Encrypt .setPublicKey(publicKey );
			return Encrypt.encrypt(key)
	})
}

//加密两个参数时
const doEncryptTwo = (key) =>{//请求公钥接口获取公钥
	return $http.get('/getPublickey').then(res=>{
			let publicKey = res.data.publicKey
			Encrypt .setPublicKey(publicKey );


		let keyArr;
		
		keyArr = {phoneNum:Encrypt.encrypt(key.phoneNum),password:Encrypt.encrypt(key.password)}


			return Encrypt.encrypt(keyArr )
	})
}

export default{
	login:async (data)=>{//只加密一个参数
		data.password = await doEncrypt (data.password);
		return $http.post('/login',data)
	},
	register:(data) = >{//加密两个参数
		let c= {
			phoneNum:data.phoneNum,
			password:data.password
		}
		data = await doEncryptTwo(c)
		return axios.post('/register',data)
	}
}

组件内使用时

login(){
	let data = {
		phoneNum:this.loginForm.phoneNum,
		password:this.loginForm.password
	}
	this.$Api.login(data).then(res=>{
		console.log(res)
	})
}

第二种方法 不封装直接写在组件里

main.js
引入

import { JSEncrypt } from 'jsencrypt'

组件里 header.vue

loginFun(){
		//实例化JSEncrypt 
		let jse = new this,$jsEncrypt;
		//请求公钥接口
		this.$Api.publicKey().then(res=>{
			if(res.code == 200){
					//设置公钥
					jse.setPublicKey('------BEGIN PUBLIC KEY-----'+res.resulet+'-----END PUBLTC KEY-----');
					//加密
					let phoneNum = this.phoneNum+''//强制转字符串
					let data = {
						phoneNum:jse.encrypt(phoneNum )
					}
					this.$Api.register(data).then(res=>{
						console.log(res)
					})
			}
		}) 
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值