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中

相关推荐
光影少年1 小时前
前端如何调用gpu渲染,提升gpu渲染
前端·aigc·web·ai编程
Surplusx2 小时前
运用VS Code前端开发工具完成网页头部导航栏
前端·html
小宇的天下2 小时前
Calibre 3Dstack --每日一个命令day13【enclosure】(3-13)
服务器·前端·数据库
LongJ_Sir2 小时前
Cesium--可拖拽气泡弹窗(Vue3版)
javascript
跟着珅聪学java3 小时前
JavaScript 中定义全局变量的教程
javascript
一只小bit3 小时前
Qt 文件:QFile 文件读写与管理教程
前端·c++·qt·gui
午安~婉3 小时前
整理知识点
前端·javascript·vue
向前V3 小时前
Flutter for OpenHarmony数独游戏App实战:底部导航栏
javascript·flutter·游戏
人道领域3 小时前
JavaWeb从入门到进阶(javaScript)
开发语言·javascript·ecmascript
军军君013 小时前
Three.js基础功能学习十二:常量与核心
前端·javascript·学习·3d·threejs·three·三维