首页 > 其他分享 >关于SM4加解密的记录

关于SM4加解密的记录

时间:2024-12-24 10:30:16浏览次数:4  
标签:const inputEncoding 记录 SM4 加解密 iv encryptedData key

开头:最近对接的项目要求对用户信息进行SM4加秘传递,所以了解了一下使用方法

1,使用方式

安装依赖:npm i gm-crypto

2,使用

 

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

const key = '0123456789abcdeffedcba9876543210' // Any string of 32 hexadecimal digits
const originalData = 'SM4 国标对称加密'

/**
 * Block cipher modes:
 * - ECB: electronic codebook
 * - CBC: cipher block chaining
 */

let encryptedData, decryptedData

// ECB 模式
encryptedData = SM4.encrypt(originalData, key, {
  inputEncoding: 'utf8',
  outputEncoding: 'base64'
})
decryptedData = SM4.decrypt(encryptedData, key, {
  inputEncoding: 'base64',
  outputEncoding: 'utf8'
})

// CBC 模式
const iv = '0123456789abcdeffedcba9876543210' 

// Initialization vector(any string of 32 hexadecimal digits)

encryptedData = SM4.encrypt(originalData, key, { iv: iv, mode: SM4.constants.CBC, inputEncoding: 'utf8', outputEncoding: 'hex' })

decryptedData = SM4.decrypt(encryptedData, key, { iv: iv, mode: SM4.constants.CBC, inputEncoding: 'hex', outputEncoding: 'utf8' })

官方文档:gm-crypto - npm

 

标签:const,inputEncoding,记录,SM4,加解密,iv,encryptedData,key
From: https://www.cnblogs.com/liu-s-y/p/18626811

相关文章

  • 记录---uniapp 安卓端实现录音功能,保存为amr/mp3文件
    ......
  • SQLite-历史记录MVC模型实现测试
    controller.pyfrommodelimportHistoryModelfromviewimportHistoryViewclassHistoryController:def__init__(self):self.model=HistoryModel()self.view=HistoryView()defshow_records(self):#view视图,获取记录,model取......
  • 2024.12.23及以前做题记录
    低价购买题意:求一个序列最长下降子序列,及达到最长的方案数,方案不同当且仅当子序列对应位置不完全一样。做法:考虑n^2dp,用fi表示第i个位置最大是下降子序列的第几项,用gi表示达到i位置最大长度的不同方案数。首先单纯求最大长度是简单的,要计算方案数,只需要减去相同数字的贡献就......
  • 记录一次「OSS上传文件的前置处理机制」实例剖析
    作者:京东物流陈雨引言在云计算环境中,对象存储服务(OSS)是一种提供存储和访问任意类型数据(如网站内容、企业备份数据、游戏、IoT设备数据等)的服务,支持从任何地点、任何时间访问数据。在很多应用场景中,用户需要上传文件到OSS,这可能包括图片、视频、文档等多种格式的文件。为了提......
  • 【随手记录】Apache POI 报错:Zip bomb detected! The file would exceed the max. rat
    1、背景:使用POI解析Excel报错:Zipbombdetected!Thefilewouldexceedthemax.ratioofcompressedfilesizetothesizeoftheexpandeddata。Thismayindicatethatthefileisusedtoinflatememoryusageandthiscouldposeasecurityrisk.Youcanadj......
  • MFC/C++学习系列之简单记录1——错误解决与Dialog移植
    MFC/C++学习系列之简单记录1前言MFCapplication已停止工作Dialog移植MFC中的去边框设置总结前言最近接触MFC,接手一个项目,基于MFC架构编写的,在跑通代码的过程中出现的问题进行简单记录。MFCapplication已停止工作在代码移植过程中,直接build代码,提示MFCapplicat......
  • MFC/C++学习系列之简单记录8——消息映射
    MFC/C++学习系列之简单记录8——消息映射前言消息映射机制DoDataExchange函数BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏与WPF对比总结前言每天学习一点MFC的小知识!消息映射机制说起来很高大上,其实就是前端界面控件和后台代码命名的绑定。当前端控件执行某些操......
  • 园子博客后台升级至 angular 19 后 eslint 9 迁移记录
    最近在将园子的博客后台从angular15升级至angular19,升级基本完成后发现eslint不能正常工作。vscodeoutputpanel出现了eslint的警告与报错(node:8724)ESLintIgnoreWarning:The".eslintignore"fileisnolongersupported.Switchtousingthe"ignores"proper......
  • 在SpringBoot项目中优雅地记录日志(日志框架选型、SpringBoot默认的日志实现框架、如何
    文章目录1.前言2.日志框架选型2.1System.out.println2.2SLF4J2.2.1Log4j(已停止维护,不再介绍)2.2.2LogBack&Log4j22.3扩展:日志框架背后的故事3.SpringBoot默认的日志实现框架(Logback)4.如何使用日志框架4.1常规方法4.2使用Lombok工具库提供的@Slf4j注解4.3......
  • ubuntu20.04 RTKLIB QT版构建流程记录
    rtklib是GNSS领域有名的开源软件,在此记录成功构建QT版的步骤。0系统信息话不多说,首先上一张neofetch图展示系统信息。我的系统是Ubuntu20.04.6,其他系统版本暂未尝试。1打开qtcreator由于系统安装了多个qtcreator,从终端打开QtCreator4.11.0之所以强调Creator版本,是因......