CryptoJS加密解密

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:链接参数加密

原先参数信息都是明文展示,出于安全考虑,需要加密

http://192.168.188.136:8080/#/shareTrial?shareTicket=13154524&shareChannel=1

链接的参数加密,类似于下面

http://192.168.188.136:8080/#/shareTrial?shareTicket=ujdvNawZxVCh6GcDwcOL3g==&shareChannel=G75ym72YoD2FrTzndvqKBw==


提示:以下是本篇文章正文内容,使用CryptoJS实现对称加密解密。

一、加密算法及工具

安装crypto-js

npm install crypto-js

引入crypto-js

import CryptoJS from 'crypto-js'

CryptoJS相关属性说明

CryptoJS.AES,CryptoJS.AES.encrypt加密、CryptoJS.AES.decrypt解密:

value:加密/解密的字符串
key:密钥
iv:密钥偏移量
mode加密模式,使用 CryptoJS.mode.xxx,有如下参数:
CBC(Cipher Block Chaining) (the default)加密块链模式
CFB(Cipher Feedbackblock)加密反馈模式
CTR/CTRGladman(Counter block)
OFB(Output Feedbackblock)输出反馈模式
ECB(Electronic Codebook block)电子密码本模式
padding填充方式,使用方CryptoJS.pad.xxx,有如下参数:
Pkcs7 (the default) AnsiX923 Iso10126 Iso97971
ZeroPadding NoPadding
encoding编码格式,从编码格式转换为WordArray对象,反之亦然。
使用CryptoJS.enc.xxx.parse、CryptoJS.enc.xxx.stringify,
有如下参数:
Hex
Latin1
Utf8
Utf16
Base64

全局挂载

Vue.prototype.$crypto = Crypto;

使用方法

      this.$crypto.encrypt(data, AES_KEY, IV) //加密
	  this.$crypto.decrypt (data, AES_KEY, IV) //解密

二、加密解密代码

import CryptoJS from 'crypto-js'

export default {
    
    
  // 解密  data:要加密解密的数据,AES_KEY:密钥,IV:偏移量
  decrypt (data, AES_KEY, IV) {
    
    
    const key = CryptoJS.enc.Utf8.parse(AES_KEY)
    const iv = CryptoJS.enc.Utf8.parse(IV)
    const decrypt = CryptoJS.AES.decrypt(data, key, {
    
    
      iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    }).toString(CryptoJS.enc.Utf8)
    return decrypt
  },
  // 加密
  encrypt (data, AES_KEY, IV) {
    
    
    const key = CryptoJS.enc.Utf8.parse(AES_KEY)
    const iv = CryptoJS.enc.Utf8.parse(IV)
    const encrypted = CryptoJS.AES.encrypt(data, key, {
    
    
      iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
    return encrypted.toString()
  }
}

猜你喜欢

转载自blog.csdn.net/qq_34082921/article/details/133273056