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 '中国国密加解密算法'