1. 程式人生 > >vue前後端aes url傳參解密再解base64編碼

vue前後端aes url傳參解密再解base64編碼

需求:我們公司做機票訂購服務,有自己的平臺的訂單,也有第三方網站向我們網站匯入的使用者訂單,第三方匯入的是通過url傳參的方式匯入。url會攜帶使用者的相關資訊。

url裡面的引數是經過aes加密和base64編碼的,因此要取出裡面的資料是要解密和解碼的。

方案:

第一步:

安裝要依賴的js,   npm install --save_dev crypto-js    然後在元件中將其引入。

程式碼:

import CryptoJS from 'crypto-js'

截圖

第二步:

安裝要依賴的js

獲取url中要取的引數,因為是url傳參,所以我們要在初始化create時進行取值,

程式碼:

 var ddl = this.$route.query.channel
      var word = this.$route.query.info;

截圖:

第三步:

寫相應的業務js程式碼

獲取url中要取的引數,因為是url傳參,所以我們要在初始化create時進行取值,

程式碼:

result就是最終解碼後的引數。注意:asdfghjklzxcvbnm是後端給的金鑰。

 /*解密*/
      function decrypt(word) {
        var key = CryptoJS.enc.Utf8.parse("asdfghjklzxcvbnm");
        var restoreBase64 = word.replace(/\-/g, '+').replace(/_/g, '/');
        // 這裡 mode, padding, iv 一定要跟加密的時候完全一樣
        // 返回的是一個解密後的物件
        var decipher = CryptoJS.AES.decrypt(restoreBase64, key, {
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7,
          iv: '',
        });
        // 將解密物件轉換成 UTF8 的字串
        var resultDecipher = CryptoJS.enc.Utf8.stringify(decipher);
        // 返回解密結果
        return resultDecipher;
      }
      var result = decrypt(word);

截圖: