我爱编程

基于jsrsasign的vue框架rsa前端加密实现

2018-04-12  本文已影响0人  神秘的盒子

一个菜鸟做给自己看的学习记录

前端rsa加密库API:点击跳转→jsrsasign.js

官网:点击跳转→官网链接

原文:点击跳转→原文链接

//安装
npm install jsrsasign
//引入
import jsrsasign from 'jsrsasign'
//公共方法挂载
Vue.prototype.$getCode = function(){
     
     //此处操作与后端约定参数
     
     
     // 创建RSAKey对象
     var rsa = new jsrsasign.RSAKey();
     //因为后端提供的是pck#8的密钥对,所以这里使用 KEYUTIL.getKey来解析密钥
     var k = `-----BEGIN PRIVATE KEY-----
ASDFdadfasdfFADFasdfasdgasdfasdgaasdf97asdfa7gasd9f7a7g7a(假秘钥)
-----END PRIVATE KEY-----`
     // 将密钥转码
     rsa = jsrsasign.KEYUTIL.getKey(k);  
     // 创建Signature对象,设置签名编码算法
     var sig = new jsrsasign.KJUR.crypto.Signature({"alg": "SHA256withRSA"});
     // 初始化
     sig.init(rsa)
     // 传入待加密字符串
     sig.updateString(newStr)
     // 生成密文
     var sign = jsrsasign.hextob64(sig.sign());
     // 对加密后内容进行URI编码
     sign = encodeURIComponent(sign);
     //把参数与密文拼接好,返回
     var params = newStr+'&sign='+sign; 
     return params
}

注意点:

  1. 密钥对需要带有‘—–BEGIN PRIVATE KEY—–’以及相应的尾标识
  2. 密钥对格式为PCK#8时使用KEYUTIL.getKey(yourPEMKey)进行解析,而PCK#1则使用rsa.readPrivateKeyFromPEMString
  3. sig.sign()生成的是一串16进制字符串(hexadecimal),通过需要转换为base64位使用,通过jsrsasign的全局方法hextob64()进行转换。文档见jsrsasign的global相关方法
  4. 最后根据情况 需要使用encodeURICompoent(sign)将加密后的密文进行转码,因为一些+号传到后端可能不识别。

相关知识:

上一篇下一篇

猜你喜欢

热点阅读