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请求
    },
  }
}
上一篇 下一篇

猜你喜欢

热点阅读