nodejs模块导出变成浏览器可使用的js(sm4浏览器端js实现过程)

  • 2019 年 10 月 11 日
  • 笔记

有一些实现是依赖nodejs的能力来完成的,没有浏览器端进行实现。所以需要变成浏览器端的可实现版本。

注意,此类可以导出的版本必定是不涉及系统相关的函数,比如获取文件,获取系统时间等只有nodejs独有的是没办法完成的。

下面教方法:

一、安装Browserify 工具

npm install -g browserify

二、安装完成后可以使用命令:browserify

下面举例使用nodejs实现的国密sm4算法,变成一个浏览器端可以使用的js库

nodejs端使用方式:https://www.ctolib.com/pecliu-gm-crypt.html

2.1 使用步骤如下:

// 1、新建一个文件夹(window下直接右键新建一个即可)  mkdir sm4  // 进入文件夹  cd sm4  // npm 初始化  npm init  // 然后一路回车  // 安装国密sm4  npm install gm-crypt  // 写一个使用脚本t.js,内容如下  const SM4 = require('gm-crypt').sm4;  console.log(SM4);  // 然后执行命令生成js脚本  browserify t.js > sm4.js  // 此时可以看到sm4脚本已经生成,用编辑器打开sm4.js,查找console.log(SM4),将其注释掉,加上window.SM4 = SM4;  // 然后浏览器使用时候直接加载sm4,然后使用方式如下:  let sm4Config = {    // encrypt/decypt main key; cannot be omitted    key: 'JeF8U9wHFOMfs2Y8',      // optional; can be 'cbc' or 'ecb'    mode: 'cbc', // default      // optional; when use cbc mode, it's �necessary    iv: 'UISwD9fW6cFh9SNS', // default is null      // optional: this is the cipher data's type; Can be 'base64' or 'text'    cipherType: 'base64' // default is base64  }    let sm4 = new SM4(sm4Config);  // 加密  let plaintext = '中国国密加解密算法'  let ciphertext = sm4.encrypt(plaintext)  // ciphertext's result is 'j/+HgSpv8RZQI2YtSq0L1RnemiSokMm1VvLHSTt245U='  // 解密  let ciphertext = 'j/+HgSpv8RZQI2YtSq0L1RnemiSokMm1VvLHSTt245U='  let plaintext = sm4.decrypt(ciphertext)  // plaintext's result is '中国国密加解密算法'