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

December 17, 2023
测试
测试
测试
测试
4 分钟阅读

有一些实现是依赖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 '中国国密加解密算法'

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多