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

作者:Jeebiz  创建时间:2022-05-28 15:13
 更新时间:2024-07-02 22:15