美文网首页我爱编程
基于jsrsasign的vue框架rsa前端加密实现

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

作者: 神秘的盒子 | 来源:发表于2018-04-12 10:15 被阅读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)将加密后的密文进行转码,因为一些+号传到后端可能不识别。

    相关知识:

    相关文章

      网友评论

        本文标题:基于jsrsasign的vue框架rsa前端加密实现

        本文链接:https://www.haomeiwen.com/subject/cifxkftx.html