【crypto-js】前端AES对称加解密

导读:上一篇记录了【crypto-js】公共类以及DES加解密方法;接上篇记录AES加解密的方法。

安装

npm i crypto-js

引入

import CryptoJS from 'crypto-js'

AES

AES加密是用的最多的,推荐。
用来替代之前的DES算法,长度有128位,192位,256位,其中128位使用最广泛。

加密算法

AES/CBC/PK7加密方式

  // 这里key ,iv 设置为一样的,实际情况跟后端确认
  let key = CryptoJS.enc.Utf8.parse(keyStr)
  let iv = CryptoJS.enc.Utf8.parse(keyStr)
  
  aes_encrypt(message) {
    //加密(aes)
    let srcs = CryptoJS.enc.Utf8.parse(JSON.stringify(message))
    let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
    return encrypted.toString() // 返回base64字符串
  },
解密算法
  
  aes_decrypt(message) {
    //解密(aes),接收到的message是base64字符串。
    let decrypt = CryptoJS.AES.decrypt(message, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
    return CryptoJS.enc.Utf8.stringify(decrypt).toString()
  },

MD5算法

MD5 常见的哈希算法,用于生成128位的哈希值。注意:MD5 方法调用之后,还需要调用 toString 方法。

// 16 进制形式进行编码
CryptoJS.MD5(keyStr).toString(CryptoJS.enc.Hex)

// Converts a hex string to a word array.
CryptoJS.enc.Utf8.parse(CryptoJS.MD5(keyStr).toString(CryptoJS.enc.Hex))

总结

  • encrypted.toString() 会被转换成Base64格式的字符串
  • encrypted.ciphertext.toString() 返回结果不是base64格式的,而是128位的

对称加密算法:DES或者AES算法,加密key和解密key用同一个。当model是ECB时,不需要设置偏移量iv,使用模式des/cbc/pkcs7或者其他模式 具体跟后端确认保持一致。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值