vue前端rsa入参加密请求
2021-07-16 本文已影响0人
小溪流jun
基于项目需求对入参进行加密传输
1、安装node-forge
npm i node-forge -S
2、加密入参
<script>
import * as forge from 'node-forge' //rsa加密
</script>
export default {
methods:{
//获取key和id,rsa加密
async getPassIdKey() {
//id和key拼接
const dataTime = Date.now()
let res = await getRandomNumber(dataTime)
let key = res.data
let params = this.detailInformation.realFixId
? this.detailInformation.realFixId
: this.$route.params.realFixId
let IdKey = params.concat('&', key)
console.log('需要加密idkey', IdKey)
//rsa加密
const pki = forge.pki
//后端提供的publicKey
var publicKey =
'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAILYMpzgCC8ZRcbr86NBRNpuoozTjqrQ2vHvgbYzt/ReidPeFj46c+JHzDJ2umQQOsjn2R60wAQdmKzafrzewScCAwEAAQ=='
const publicK = pki.publicKeyFromPem(
'-----BEGIN PUBLIC KEY-----\n' + publicKey + '\n-----END PUBLIC KEY-----'
)
const passwordCrypto = forge.util.encode64(publicK.encrypt(IdKey))
return urlencode(passwordCrypto)
},
urlencode(str){
str = (str + '').toString()
//encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
//该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
return encodeURIComponent(str)
.replace(/!/g, '%21')
.replace(/'/g, '%27')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/\*/g, '%2A')
.replace(/%20/g, '+')
},
async getDetail() {
let KayId = await this.getPassIdKey()
const lastKayId = KayId.replace(new RegExp('%', 'g'), '%25')
//发送http请求
},
}
}