一、node.js环境安装

1 去官网下载压缩包,并放置到/usr/local/bin文件夹下

2 进行环境变量配置

vim /etc/profile

在环境变量文件的末尾添加

export NODEJS=/usr/local/bin/node-v16.18.1-linux-x64
export PATH=$PATH:$NODEJS/bin

3 验证安装情况

node -v
npm -v

成功安装示例:

二、gm-crypto module下载

npm install gm-crypto

以下为正确示例:

三、代码调试

1 sm2

首先进入root目录,查看刚刚下载的工作环境node_modules

进入路径node_modules,并创建sm2.js文件,验证代码如下:

const { SM2 } = require('gm-crypto')

const { publicKey, privateKey } = SM2.generateKeyPair()
const originalData = '20201307lcy' const encryptedData = SM2.encrypt(originalData, publicKey, {
inputEncoding: 'utf8',
outputEncoding: 'base64'
})
console.log(encryptedData) const decryptedData = SM2.decrypt(encryptedData, privateKey, {
inputEncoding: 'base64',
outputEncoding: 'utf8'
})
console.log(decryptedData)

编译指令:node sm2.js

2 sm3

创建验证文件sm3.js

vim sm3.js
const { SM3 } = require('gm-crypto')

console.log(SM3.digest('20201307'))
console.log(SM3.digest('lcy'))
console.log(SM3.digest('12345678'))

编译sm3.js

在线网站验证:http://lzltool.cn/SM3

3 sm4

vim sm4.js

const { SM4 } = require('gm-crypto')

const key = '0123456789abcdeffedcba9876543210' // Any string of 32 hexadecimal digits
const originalData = '20201307lcy' /**
* Block cipher modes:
* - ECB: electronic codebook
* - CBC: cipher block chaining
*/ let encryptedData, decryptedData // ECB
encryptedData = SM4.encrypt(originalData, key, {
inputEncoding: 'utf8',
outputEncoding: 'base64'
})
console.log(encryptedData) decryptedData = SM4.decrypt(encryptedData, key, {
inputEncoding: 'base64',
outputEncoding: 'utf8'
})
console.log(decryptedData) console.log('\n') // CBC
const iv = '0123456789abcdeffedcba9876543210' // Initialization vector(any string of 32 hexadecimal digits)
encryptedData = SM4.encrypt(originalData, key, {
iv,
mode: SM4.constants.CBC,
inputEncoding: 'utf8',
outputEncoding: 'hex'
})
console.log(encryptedData) decryptedData = SM4.decrypt(encryptedData, key, {
iv,
mode: SM4.constants.CBC,
inputEncoding: 'hex',
outputEncoding: 'utf8'
})
console.log(decryptedData)
node sm4.js

最新文章

  1. C++函数指针总结
  2. 做一个会使用PS的前端开发
  3. C#求任意范围内的质数
  4. [.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst
  5. Spectrum to XYZ to sRGB
  6. Windows8不联网直接安装.Net 3.5 Framework的方法
  7. RMQ(dp)
  8. dataset 用法(1)
  9. 物流追踪 - -GPS和GPRS应用
  10. POJ题目(转)
  11. 关于appium+模拟器+idea的细谈
  12. 【JavaScript的基本语法】
  13. C语言的数组指针
  14. Redis配置参数详解
  15. 在docker中快速创建包含ip相关tool的ubuntu镜像
  16. ionic app开发遇到的问题
  17. JAVA基础3---运算符大全
  18. Android--解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题
  19. IDEA插件——lombok的简单使用
  20. 微软2016校园招聘在线笔试-Professor Q's Software

热门文章

  1. GitLab服务器修改用户密码
  2. promethues【centos7】时间同步
  3. 02_IntelliJ IDEA常用快捷键
  4. 【面试题】手写async await核心原理,再也不怕面试官问我async await原理
  5. rabbitmq监控与运维
  6. 使用svg让页面自适应浏览器大小,整体等比缩放
  7. mysql创建存储过程造数据
  8. CI2454国产8位RISC核SoC芯片
  9. [273] High Five Update 3 OpCodez
  10. [Swift]使用Alamofire传递参数时报错