AES加密

import CryptoJS from 'crypto-js'

// 默认的 KEY 与 iv 如果没有给
const KEY = CryptoJS.enc.Utf8.parse('0102030405060708')
const IV = CryptoJS.enc.Utf8.parse('0102030405060708')

export default {
  /**
   * AES加密 :字符串 key iv  返回base64
   */
  encrypt(word, keyStr, ivStr) {
    let key = KEY
    let iv = IV
    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr)
      iv = CryptoJS.enc.Utf8.parse(ivStr)
    }
    let srcs = CryptoJS.enc.Utf8.parse(word)
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext)

  },
  /**
   * AES 解密 :字符串 key iv  返回base64
   *
   * @return {string}
   */
  decrypt(word, keyStr, ivStr) { 
    //解决java返回加密内容存在折行符问题
    word = word = (word + '').replace(/\n*$/g, '').replace(/\n/g, '')
    let key = KEY
    let iv = IV

    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr)
      iv = CryptoJS.enc.Utf8.parse(ivStr)
    }
    let base64 = CryptoJS.enc.Base64.parse(word)
    let src = CryptoJS.enc.Base64.stringify(base64)

    let decrypt = CryptoJS.AES.decrypt(src, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
    console.log(decryptedStr)
    return decryptedStr.toString()
  }
}

 在线工具:http://tool.chacuo.net/cryptaes

 

 

encrypt设置属性为上图配置属性

 

posted @ 2022-03-18 18:24  小码农+1  阅读(68)  评论(0编辑  收藏  举报