欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

国密 GM/T 系列(SM2、SM3、SM4)纯 JavaScript 实现

最编程 2024-07-10 15:39:04
...
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, mode: SM2.constants.CBC, inputEncoding: 'utf8', outputEncoding: 'hex' }) decryptedData = SM4.decrypt(encryptedData, key, { iv, mode: SM2.constants.CBC, inputEncoding: 'hex', outputEncoding: 'utf8' })