前端 AES与RSA加解密

安装

npm install crypto-js --save
npm install jsencrypt --save

核心代码

import { JSEncrypt } from 'jsencrypt'
import CryptoJS from 'crypto-js'

class Decipherer {
  constructor() {
    // rsa  
    this.jsEncrypt = new JSEncrypt()
    // aes
    this.key = '' // 十六位十六进制数作为密钥
    this.iv = '' // 十六位十六进制数作为密钥偏移量
  }
  // rsa 加密
  encryptedData(publicKey, data) {
    this.jsEncrypt.setPublicKey(publicKey)
    return this.jsEncrypt.encrypt(JSON.stringfy(data))
  }
  // rsa 解密
  decryptedData(privateKey, data) {
    this.jsEncrypt.setPrivateKey(privateKey)
    return this.jsEncrypt.decrypt(JSON.stringfy(data)
  }
  // aes 解密方法
  Decrypt(data) {
    const encryptedHexStr = CryptoJS.enc.Hex.parse(data.replace(/[\r\n]/g, ''))
    const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
    const decrypt = CryptoJS.AES.decrypt(srcs, this.key, { iv: this.iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
    const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
    return decryptedStr.toString()
  }
  // aes 加密
  Encrypt(data) {
    const srcs = CryptoJS.enc.Utf8.parse(data)
    const encrypted = CryptoJS.AES.encrypt(srcs, this.key, { iv: this.iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
    return encrypted.ciphertext.toString().toUpperCase()
  }
  // aes,密钥key 偏移量设置
  setDate(key, iv) {
    this.key = CryptoJS.enc.Utf8.parse(key) // 十六位十六进制数作为密钥
    this.iv = CryptoJS.enc.Utf8.parse(iv) // 十六位十六进制数作为密钥偏移量
  }
}

export default new Decipherer()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值