关于SM4加解密的记录
开头:最近对接的项目要求对用户信息进行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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?