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

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

前端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)将加密后的密文进行转码,因为一些+号传到后端可能不识别。

相关知识:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,046评论 25 709
  • Base64.java public final class Base64 { static private ...
    BUG弄潮儿阅读 4,245评论 0 0
  • 最近公司用到RSA数据加密传输,本人也只会使用,并不知其原理,刚好今天在csdn看到一位大牛的博客写得很到位,遂搬...
    爸比好酷阅读 5,241评论 0 1
  • 人生就像演戏 有时哭,有时笑 生活就像看戏 跟着哭,跟着笑 我们在别人的世界笑 在自己的世界里哭 宛如一场有趣的电...
    茉颜阅读 2,187评论 4 3
  • 闲暇之余精读了崔秉权的作品《中层领导力》。读后,很有感触,特与各位HR朋友们做以下分享: 书中通过...
    风同学阅读 3,468评论 0 4