CryptoJS hex模式前端

CryptoJS

加密:

javascript 复制代码
aesJson (str, secretKey, aesIv, padding) {
  let key
  let iv
  key = CryptoJS.enc.Utf8.parse(secretKey)
  iv = CryptoJS.enc.Utf8.parse(aesIv)
  let plaintText = str // CryptoJS.enc.Utf8.parse(str) 明文string
  let encrypted = CryptoJS.AES.encrypt(plaintText, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: padding && CryptoJS.pad.Pkcs7
  })
  let data2
  if (padding) {
    data2 = encrypted.ciphertext.toString()
  } else {
    data2 = encrypted.toString() // 加密后的数据
  }
  return data2
}

加密注意:hex 模式生成密文只去加密后ciphertext里面的数据,转json

解密:

javascript 复制代码
function decrypt (data, secretKey, aesIv, padding) {
  // key,iv:16位的字符串
  let encryptedBase64Str
  if (padding) {
    // Hex 模式解密
    encryptedBase64Str = {ciphertext:  CryptoJS.enc.Hex.parse(data) }
  } else {
    encryptedBase64Str = data
  }
  let key
  let iv
  key = CryptoJS.enc.Utf8.parse(secretKey)
  iv = CryptoJS.enc.Utf8.parse(aesIv)
  // console.log(data, encryptedBase64Str)
  let decrypted = CryptoJS.AES.decrypt(encryptedBase64Str, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: padding && CryptoJS.pad.Pkcs7
  })
  // return JSON.parse(decrypted.toString(padding ? CryptoJS.enc.Hex : CryptoJS.enc.Utf8))
  return JSON.parse(decrypted.toString(CryptoJS.enc.Utf8))
}

注意:解密需对密文先进行hex转译,然后使用放在对象ciphertext中

坑:

Malformed UTF-8 data(报错)解密时没有,对密文先进行hex转译,然后使用放在对象ciphertext中

相关推荐
有梦想的刺儿16 分钟前
webWorker基本用法
前端·javascript·vue.js
cy玩具37 分钟前
点击评论详情,跳到评论页面,携带对象参数写法:
前端
清灵xmf1 小时前
TypeScript 类型进阶指南
javascript·typescript·泛型·t·infer
小白学大数据1 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
qq_390161771 小时前
防抖函数--应用场景及示例
前端·javascript
334554322 小时前
element动态表头合并表格
开发语言·javascript·ecmascript
John.liu_Test2 小时前
js下载excel示例demo
前端·javascript·excel
Yaml42 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
PleaSure乐事2 小时前
【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案
前端·javascript·react.js·前端框架·webstorm·antdesignpro
哟哟耶耶2 小时前
js-将JavaScript对象或值转换为JSON字符串 JSON.stringify(this.SelectDataListCourse)
前端·javascript·json