1. 程式人生 > 實用技巧 >vue專案中使用des加密解密

vue專案中使用des加密解密

前端有時把資料傳給後端,也是需要加密的,這裡介紹下des加密:

DES 加密演算法為最為常見的分組加密演算法。其主要思想在於資料位的置換與移位過程,通過16次的迭代加密與最終的逆置換得出最終的密文。DES 的解密方式只需按照加密的逆過程求解即可。由於DES 加密過程的演算法是公開的,所以金鑰K的保密就顯得尤為重要,只有傳送方與接收方採用相同的金鑰進行加密解密才能獲取明文資料。

在vue中使用DES加密解密需要使用crypto-js外掛,首先下載 npm install crypto-js

加密方法如下:

/*
* message:需要加密的字串,
* key: 金鑰(加密解密金鑰同一個)
*/
encryptDes (message, key = 'xxxxxxxxxxxxxxxxxxxxx') {
    const keyHex = cryptoJs.enc.Utf8.parse(key)
    const option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 }
    const encrypted = cryptoJs.DES.encrypt(message, keyHex, option)
    return encrypted.ciphertext.toString() // 返回hex格式密文,如需返回base64格式:encrypted.toString()
  }

解密方法如下:

/*
* message:需要解密的字串,
* key: 金鑰(加密解密金鑰同一個)
*/
  decryptDes (message, key = 'xxxxxxxxxxxxxx') {
    const keyHex = cryptoJs.enc.Utf8.parse(key)
    const decrypted = cryptoJs.DES.decrypt(
      {
        ciphertext: cryptoJs.enc.Hex.parse(message)
      },// 若message是base64格式,則無需轉16進位制hex,直接傳入message即可
      keyHex,
      {
        mode: cryptoJs.mode.ECB,
        padding: cryptoJs.pad.Pkcs7
      }
    )
    return decrypted.toString(cryptoJs.enc.Utf8)
  }