前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs模块导出变成浏览器可使用的js(sm4浏览器端js实现过程)

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

原创
作者头像
whileideath
修改2019-09-29 22:14:02
3.2K0
修改2019-09-29 22:14:02
举报
文章被收录于专栏:移动安全

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

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

下面教方法:

一、安装Browserify 工具

代码语言:shell
复制
npm install -g browserify

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

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

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

2.1 使用步骤如下:

代码语言:javascript
复制
// 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 '中国国密加解密算法'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档