美文网首页
微信小程序中使用RSA算法生成秘钥对

微信小程序中使用RSA算法生成秘钥对

作者: codeCoder | 来源:发表于2018-08-10 13:20 被阅读812次

GitHub 上使用 JavaScript 来生成公钥私钥对的库:https://github.com/travist/jsencrypt/

修改库

但是在微信小程序中,引入这个库会报这样的错误 error.png

原因是这个第三方库使用了 window 对象,而微信小程序的页面的脚本逻辑是在 JsCore 中运行,JsCore 是一个没有窗口对象的环境,所以不能在脚本中使用 window,也无法在脚本中操作组件。

经过了一段时间的挣扎,终于找到了解决方法:

  1. 给第三方库添加 window2 和 navigator2 变量
  2. 将程序中用到 window 和 navigator 的地方进行全局替换 为window2 和 navigator2。
(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
    typeof define === 'function' && define.amd ? define(['exports'], factory) :
    (factory((global.JSEncrypt = {})));
}(this, (function (exports) { 'use strict';
//--------------------- 这里开始添加---------------------
  // 用来替换 navigator
  var navigator2 = {
    appName: 'Netscape',
    userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'
  };
  //  用来替换window
  var window2 = {
    ASN1: null,
    Base64: null,
    Hex: null,
    crypto: null,
    href: null
  };
//--------------------- 这里结束添加---------------------
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
function int2char(n) {
    return BI_RM.charAt(n);
}

生成公钥私钥

// 引入文件
var Encrypt = require('jsencrypt.js')

// 生成秘钥对
// 返回数组 array[0]公钥  array[1]私钥
function generateKeys(){
  var crypt = new Encrypt.JSEncrypt({ default_key_size: 1024 });
  crypt.getKey();
  var publicKey = crypt.getPublicKey();
  var privateKey = crypt.getPrivateKey();

  // 去除-----*** RSA **** KEY----- 和空格换行
  publicKey = (publicKey.split('-----'))[2];
  publicKey = publicKey.replace(/\n/g, "").replace(/\r/g, "").replace(/\t/g, "").replace(/\s*/g, "");
  privateKey = (privateKey.split('-----'))[2];
  privateKey = privateKey.replace(/\n/g, "").replace(/\r/g, "").replace(/\t/g, "").replace(/\s*/g, "");

  // 返回生成的秘钥对
  return [publicKey, privateKey];
}

相关文章

  • 微信小程序中使用RSA算法生成秘钥对

    GitHub 上使用 JavaScript 来生成公钥私钥对的库:https://github.com/travi...

  • Linux设置ssh key 登录

    获取RSA密钥对(如果已有秘钥对,该步骤略过)如果客户端为linux系统,使用下面的命令生成秘钥对(windows...

  • SSH配置免密码登录堡垒机

    1、生成rsa、rsa.pub秘钥对命令:ssh-keygen -t rsa -C "$your_email"生成...

  • 安装SSH KEY登陆

    ssh key 生成# 使用RSA算法生成公钥和私钥ssh-keygen -t rsa全部缺省回车 拷贝公钥到目标...

  • 结合RSA与AES实现前后端加密通信

    一、思路 使用RSA秘钥生成工具生成一对公钥(A)和私钥(B),前端保留A,后端保留B。 前端发送数据时,先生成一...

  • openvpn

    1.为了保证OpenVPN的安装,需要使用easy-rsa秘钥生成工具生成证书 2.生成秘钥证书前,需要准备var...

  • 密码学基础之RSA与不对称秘钥

    本文主要通过RSA加解密实践,来讲述不对称秘钥的特点。 不对称秘钥和RSA 不对称秘钥算法,也叫公钥密码算法。不对...

  • RSA公钥、私钥、签名和验签

    1 RSA加密算法介绍 RSA又叫非对称加密算法,这类加密算法有一对秘钥,其中一个用来加密一个用来解密。这一对秘钥...

  • Linux 命令操作

    1.VIM常用命令 2.生成RSA公钥、秘钥 生成私钥openssl genrsa -out rsa_privat...

  • iOS生成RSA公钥和私钥

    使用下面这个链接的方法生成的公钥和私钥 链接地址:iOS RSA加密 以及生成公钥 秘钥 pem文件 - 法斗斗的...

网友评论

      本文标题:微信小程序中使用RSA算法生成秘钥对

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