后端使用DES加密,前端解密方法

前言:
现在为了防止用户直接篡改数据会采用加密的方式进行传输,加密的方法有很多种,这篇文章主要讲解下后端使用DES加密的数据传输给前端,前端接收到之后如何去解密。

操作步骤如下:

1.安装crypto-js

npm install crypto-js

2.在使用的页面引入

const CryptoJS = require('crypto-js')

3.封装解密方法

// 注意这里封装的方法分为两种,一种是后端使用DES加密用到初始化向量iv的,一种是只有密文和密钥的

// 使用初始化向量iv,ciphertext:密文,key:密钥
const decryptDES = (ciphertext, key) => {
  const keyHex = CryptoJS.enc.Utf8.parse(key)
  // 注意,这里的向量是写死,如果是动态的, 则可以直接通过decrypt 方法传入。前端向量接收只能是整数类型的,但是后端给的向量一般是8字节/16字节,二进制的,这个时候就需要使用Uint8Array转成整数,如下
  let ivBytes = new Uint8Array([8,7,6,5,4,3,2,1])
  let ivHex = CryptoJS.lib.WordArray.create(ivBytes)
  let newText = CryptoJS.enc.Base64.parse(ciphertext)
  const decrypted = CryptoJS.DES.decrypt({ciphertext: newText}, keyHex,
    {
      iv: ivHex,
      mode: CryptoJS.mode.ECB, // 这里以ECB举例,如果是CBC直接把ECB替换下来即可
      padding: CryptoJS.pad.Pkcs7,
    })
  return decrypted.toString(CryptoJS.enc.Utf8)
}

// 只有密文和密钥,ciphertext:密文,key:密钥
const decryptDES = (ciphertext, key) => {
  const keyHex = CryptoJS.enc.Utf8.parse(key)
  const decrypted = CryptoJS.DES.decrypt({
    ciphertext: CryptoJS.enc.Base64.parse(ciphertext),
  }, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  })
  return decrypted.toString(CryptoJS.enc.Utf8);

// 上面代码解析:先使用 CryptoJS.enc.Base64.parse() 方法将 Base64 编码的字符串解码为 CryptoJS 中的 WordArray 对象,然后使用 CryptoJS.DES.decrypt() 方法对该对象进行解密

4.调用

decryptDES(密文,密钥)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值