在VUE中使用RSA加密解密加簽解籤

什麼是RSA

RSA加密算法是最經常使用的非對稱加密算法,它既能用於加密,也能用於數字簽名。vue

在vue中使用加密

首先引入jsencrypt算法

npm install jsencrypt --save
複製代碼

在main.js中引入npm

import JsEncrypt from 'jsencrypt'
Vue.prototype.$jsEncrypt = JsEncrypt
複製代碼

將加密解密方法封裝到通用的js內bash

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中使用加簽

加簽需引入jsrsasignui

npm install jsrsasign --save
複製代碼

在main.js中引入加密

import Jsrsasign from 'jsrsasign'
Vue.prototype.$jsrsasign = Jsrsasign
複製代碼

在封裝的js內定義加簽解籤方法spa

// 加簽(用本身的私鑰對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-----'prototype

相關文章
相關標籤/搜索