npm 安装 jsrsasign
npm i jsrsasign
//引入
import jsrsasign from 'jsrsasign';
//公共方法挂载
Vue.prototype.$jsrsasign = jsrsasign
封装方法
//PUBLIC 公钥
//PRIVATE 私钥
getRsaKeys(){
var rsaKeypair = this.$jsrsasign.KEYUTIL.generateKeypair("RSA", 2048);
this.PRIVATE = this.$jsrsasign.KEYUTIL.getPEM(rsaKeypair.prvKeyObj, "PKCS8PRV");
this.PUBLIC = this.$jsrsasign.KEYUTIL.getPEM(rsaKeypair.pubKeyObj);
return rsaKeypair;
},
前端H5的使用
//引入jsrsasign
<script src="js/jsrsasign-all-min.js"></script>
定义方法
//签名
//str 需要签名的字符串
//return 返回签名字符串
getSign: function(str){
var rsa = new RSAKey();
rsa = KEYUTIL.getKey(this.priK);
var sig = new KJUR.crypto.Signature({"alg": "SHA256withRSA"});
sig.init(rsa)
sig.updateString(str)
var sign = hextob64(sig.sign());
return sign
},
//验证签名
// str 需要验证的字符串
// sign 签名
// return 返回 true 签名正确 false 错误
verifySign: function (str,sign){
const sig2 = new KJUR.crypto.Signature({"alg": "SHA256withRSA"});
sig2.init(this.publicKey);
sig2.updateString(str);
const isValid = sig2.verify(b64tohex(sign))
return isValid
},
使用方法
使用自己的私钥签名
使用后台交换的平台公钥验证签名
签名的工作最好在后端完成,前台不暴露公钥私钥。