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
更新时间:2024-11-05 14:07