首页 > 编程语言 >nodejs中实现sm4加解密

nodejs中实现sm4加解密

时间:2024-02-06 11:32:16浏览次数:22  
标签:SM4 加密 nodejs sm4 加解密 crypto sm const

SM4 是中国密码局颁布的一种分组密码算法,也称为国密 SM4。它是基于对称密钥加密算法的一种分组密码算法,具有较高的安全性和较快的加密速度。SM4 使用 128 位的密钥和 128 位的分组进行加密。

sm-crypto 是一个支持国密 SM2、SM3、SM4 等算法的 Node.js 加密库。要使用 sm-crypto 库实现 SM4 加密,请按照以下步骤操作:

  1. 首先,安装 sm-crypto 库。在您的项目目录中运行以下命令:
npm install sm-crypto
  1. 接下来,使用以下代码示例来实现 SM4 加密:
const sm4 = require('sm-crypto').sm4;

// 密钥(16 字节)
const key = '0123456789abcdef';

// 明文
const plaintext = 'Hello, world!';

// 加密
const ciphertext = sm4.encrypt(key, plaintext);

console.log('Ciphertext:', ciphertext);

在这个示例中,我们首先导入了 sm-crypto 库中的 sm4 模块。然后,我们创建了一个 16 字节的密钥和一个明文字符串。接下来,我们使用 sm4.encrypt() 函数对明文进行加密。

要解密加密后的数据,您可以使用 sm4.decrypt() 函数。

// 解密
const decrypted = sm4.decrypt(key, ciphertext);

console.log('Decrypted plaintext:', decrypted);

在这个示例中,我们使用 sm4.decrypt() 函数对密文进行解密。最后,我们将解密后的数据以字符串形式显示。

请注意,sm-crypto 库默认使用 CBC 模式和 PKCS7 填充。如果需要使用其他模式或填充方式,可以在 encrypt()decrypt() 函数中指定相应的选项。例如:

const options = {
  mode: 'cbc', // 可选值:'cbc'(默认)或 'ecb'
  padding: 'pkcs7' // 可选值:'pkcs7'(默认)或 'none'
};

// 加密
const ciphertext = sm4.encrypt(key, plaintext, options);

// 解密
const decrypted = sm4.decrypt(key, ciphertext, options);

如果使用typescript,推荐使用库sm-crypto-v2

npm install --save sm-crypto-v2

加密验证可使用在线工具:在线SM4加密/解密

标签:SM4,加密,nodejs,sm4,加解密,crypto,sm,const
From: https://blog.51cto.com/u_16352146/9618543

相关文章

  • Windows中通过NVM安装和切换各个NodeJS版本
    1、下载NVM下载地址:https://github.com/coreybutler/nvm-windows/releases如我们下载:https://github.com/coreybutler/nvm-windows/releases/download/1.1.12/nvm-setup.exe2、安装NVM在安装前,最好将已安装的NodeJS卸载掉,避免出现不必要的问题。选择NVM安装目录,如下所示:......
  • nodejs的下载安装
    8、nodejs的作用在vscode打开项目后,由于项目依附于我们的npm,我们需要将npm中的依赖下载下来,npm又依附于nodejs,故需要下载nodejs。下载node并安装:https://nodejs.org/dist/v12.14.0/nodev12.14.0-x64.msi; 9、设置npm镜像(同设置maven) ......
  • nodejs+axios调用第三方接口返回数据给前端
    nodejsaxios调用第三方接口返回数据给前端后端koalas前端vue0.内容和前后端框架本项目为前端执行时间段和航班,后端利用指定信息查询第三方航班信息接口并返回给前端。1.koajs+axiosapp.js文件中引入koa、添加初始化中间件并启动项目。1.1引入koa并添加初始化bodyPars......
  • springboot接口加解密传输
    前言:写这个博客的目的也是想着后面如果需要用上的时候方便参考,这篇文章使用的也是比较简单的加解密流程,但这篇文章注重点是后端对于前端传过来的加密参数怎么接收,然后统一拦截解密后又回到原本接口上,接口返回结果时又是怎么将结果集加密后传输出去还有一个很重要的......
  • nvm安装Nodejs时报错,Could not retrieve https://npm.taobao.org/mirrors/node/latest
    1.首先要使用管理员运行命令2.在安装nvm的目录下找到settings.txt,没有就手动增加一个node_mirror:https://npm.taobao.org/mirrors/node/npm_mirror:https://npm.taobao.org/mirrors/npm/这个地方有点奇怪,安装18的时候把上面的Https://去掉以后就下载成功了3.安装19以及......
  • php的SM4加密
     <?php/***Sm4加密解密类*ClassSm4Helper*@packageapp\common\tools*/classSm4{constSM4_CK=[0x00070e15,0x1c232a31,0x383f464d,0x545b6269,0x70777e85,0x8c939aa1,0xa8afb6bd,0xc4cbd2d9,0xe0e7eef5,0xfc030......
  • NodeJS框架对比 - Express、Koa、Egg、Nest等
     Express.jsExpress.js是Node.JS诞生之初,最早出现的一款框架,现在仍然很流行,作者是TJ。Express是基于回调,也是node中最常见的Error-First的模式(第一个参数是error对象)一个简单的Express服务器查看代码constexpress=require('express');constapp=express();/*......
  • 【NodeJS】- 使用NVM安装npm失败后,手动安装npm
    安装NVM之后,我们通常会配置镜像,在setting文件中,添加镜像路径node_mirror:https://npm.taobao.org/mirrors/nodenpm_mirror:https://npm.taobao.org/mirrors/npm但是这两天镜像突然炸了,于是我删掉了镜像地址,使用官方直接下载。但是npm下载非常困难,而且高版本的npm还存在wo......
  • nodejs 组件引入
    constfs=require("fs");constnodePath=require("path");//import*asfsfrom"fs";constfolder="./";constcondition=["node_modules","compile"];letarr:string[]=[];main(folder,......
  • nodejs下载URL地址的文件后保存以及删除指定文件夹的操作
    这里下载文件用了axios去下载下载:publicasyncdownload_from(url,fileName){returnnewPromise(async(resolve,reject)=>{constdownload_dir=path.join(process.cwd(),AppConfig.config.download_file_path,this._job_id......