在VUE中使用RSA加密解密加签解签

什么是RSA

RSA加密算法是最常用的非对称加密算法,它既能用于加密,也能用于数字签名。

在vue中使用加密

首先引入jsencrypt

npm install jsencrypt --save
复制代码

在main.js中引入

import JsEncrypt from 'jsencrypt'
Vue.prototype.$jsEncrypt = JsEncrypt
复制代码

将加密解密方法封装到通用的js内

let publicKey = '这里是封装的公钥'
let privateKey = '这里是封装的私钥'
//加密方法
  RSAencrypt(pas){
    //实例化jsEncrypt对象
    let jse = new JSEncrypt();
    //设置公钥
    jse.setPublicKey(publicKey);
    // console.log('加密:'+jse.encrypt(pas))
    return jse.encrypt(pas);
  },
  
//解密方法
  RSAdecrypt(pas){
    let jse = new JSEncrypt();
    // 私钥
    jse.setPrivateKey(privateKey)
    // console.log('解密:'+jse.decrypt(pas))
    return jse.decrypt(pas);
  },
复制代码

在vue中使用加签

加签需引入jsrsasign

npm install jsrsasign --save
复制代码

在main.js中引入

import Jsrsasign from 'jsrsasign'
Vue.prototype.$jsrsasign = Jsrsasign
复制代码

在封装的js内定义加签解签方法

// 加签(用自己的私钥对signData进行签名)
  signature (signData) {
    // 私钥加签
    let signPrivateKey = '-----BEGIN PRIVATE KEY-----这里是私钥-----END PRIVATE KEY-----';
    let sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa","prvkeypem": signPrivateKey});
    // let rsa = new KJUR()
    // rsa = KEYUTIL.getKey(privateKey)
    var hashAlg = 'sha1'; // 设置sha1
    var sign = sig.signString(signData, hashAlg); // 加签
    sign = hex2b64(sign);
    // console.log(sign)
    return sign;
  },
  
  // 验签 用公钥对签名进行验签
  verify (signData, data) {
    // signData: 加签的数据
    // data: 加签之后得到的签文
    try {
      let signPublicKey = '-----BEGIN PUBLIC KEY-----这里是公钥-----END PUBLIC KEY-----';
      let sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa","prvkeypem": signPublicKey});
      sig.updateString(signData);
      let result = sig.verify(data);
      // console.log(result)
      return result;
    } catch(e) {
      console.error(e);
    }
  }
复制代码

特别提醒:加签验签时,公钥和私钥都需要加入头尾'-----BEGIN PUBLIC KEY-----这里是公钥-----END PUBLIC KEY-----'

你可能感兴趣的:(在VUE中使用RSA加密解密加签解签)