1. 程式人生 > >在VUE中使用RSA加密解密加簽解籤

在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-----'